- Made the forget password UI.
- Made login view. - Continue the flow from onboarding. - added the flow from login-> create account and forget password.
This commit is contained in:
@@ -11,7 +11,7 @@ This Library consist of all Reusable Modules For iOS with language **SWIFT**.
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
[](https://github.com/WdiplCodeRepo/IOS/tree/main/Authentication)
|
[](https://developer.apple.com/swift/)
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|||||||
@@ -74,6 +74,14 @@
|
|||||||
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */; };
|
9C56E8462BDBEE6400E4CA14 /* EmailVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */; };
|
||||||
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */; };
|
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */; };
|
||||||
9C56E84B2BDBF03F00E4CA14 /* AuthenticationSB.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9C56E84A2BDBF03F00E4CA14 /* AuthenticationSB.storyboard */; };
|
9C56E84B2BDBF03F00E4CA14 /* AuthenticationSB.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9C56E84A2BDBF03F00E4CA14 /* AuthenticationSB.storyboard */; };
|
||||||
|
9CBCB29B2BE4D614007D7934 /* LoginVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB29A2BE4D614007D7934 /* LoginVC.swift */; };
|
||||||
|
9CBCB29D2BE4D6BB007D7934 /* LoginVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB29C2BE4D6BB007D7934 /* LoginVM.swift */; };
|
||||||
|
9CBCB29F2BE4E13A007D7934 /* ValidatorClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB29E2BE4E13A007D7934 /* ValidatorClass.swift */; };
|
||||||
|
9CBCB2A12BE4E50A007D7934 /* TextFieldPassword.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A02BE4E50A007D7934 /* TextFieldPassword.swift */; };
|
||||||
|
9CBCB2A32BE50C95007D7934 /* ResetPassUserNameVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A22BE50C95007D7934 /* ResetPassUserNameVC.swift */; };
|
||||||
|
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A42BE50D49007D7934 /* NewPasswordVC.swift */; };
|
||||||
|
9CBCB2A82BE5105A007D7934 /* Home.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A72BE5105A007D7934 /* Home.storyboard */; };
|
||||||
|
9CBCB2AA2BE51A52007D7934 /* HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CBCB2A92BE51A52007D7934 /* HomeVC.swift */; };
|
||||||
9CDC343C2BDBBC6B00093089 /* SelectAgeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */; };
|
9CDC343C2BDBBC6B00093089 /* SelectAgeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */; };
|
||||||
9CDCE1452BDB9B9A003FEF11 /* OnBoardMainSound.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 9CDCE1442BDB9B9A003FEF11 /* OnBoardMainSound.m4a */; };
|
9CDCE1452BDB9B9A003FEF11 /* OnBoardMainSound.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 9CDCE1442BDB9B9A003FEF11 /* OnBoardMainSound.m4a */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
@@ -170,6 +178,14 @@
|
|||||||
9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailVC.swift; sourceTree = "<group>"; };
|
9C56E8452BDBEE6400E4CA14 /* EmailVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailVC.swift; sourceTree = "<group>"; };
|
||||||
9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetColor.swift; sourceTree = "<group>"; };
|
9C56E8472BDBEFAB00E4CA14 /* AssetColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AssetColor.swift; sourceTree = "<group>"; };
|
||||||
9C56E8492BDBF03F00E4CA14 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/AuthenticationSB.storyboard; sourceTree = "<group>"; };
|
9C56E8492BDBF03F00E4CA14 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/AuthenticationSB.storyboard; sourceTree = "<group>"; };
|
||||||
|
9CBCB29A2BE4D614007D7934 /* LoginVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVC.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB29C2BE4D6BB007D7934 /* LoginVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginVM.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB29E2BE4E13A007D7934 /* ValidatorClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ValidatorClass.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB2A02BE4E50A007D7934 /* TextFieldPassword.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextFieldPassword.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB2A22BE50C95007D7934 /* ResetPassUserNameVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResetPassUserNameVC.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB2A42BE50D49007D7934 /* NewPasswordVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewPasswordVC.swift; sourceTree = "<group>"; };
|
||||||
|
9CBCB2A72BE5105A007D7934 /* Home.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Home.storyboard; sourceTree = "<group>"; };
|
||||||
|
9CBCB2A92BE51A52007D7934 /* HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeVC.swift; sourceTree = "<group>"; };
|
||||||
9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectAgeVC.swift; sourceTree = "<group>"; };
|
9CDC343B2BDBBC6B00093089 /* SelectAgeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectAgeVC.swift; sourceTree = "<group>"; };
|
||||||
9CDCE1412BDB94BA003FEF11 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Main.strings; sourceTree = "<group>"; };
|
9CDCE1412BDB94BA003FEF11 /* hi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hi; path = hi.lproj/Main.strings; sourceTree = "<group>"; };
|
||||||
9CDCE1422BDB94BD003FEF11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = "<group>"; };
|
9CDCE1422BDB94BD003FEF11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Main.strings; sourceTree = "<group>"; };
|
||||||
@@ -226,6 +242,7 @@
|
|||||||
children = (
|
children = (
|
||||||
5202AB002BDFA7900043B7BD /* EmailValidation.swift */,
|
5202AB002BDFA7900043B7BD /* EmailValidation.swift */,
|
||||||
52D774EE2BDFC50D001D87DE /* StringValidations.swift */,
|
52D774EE2BDFC50D001D87DE /* StringValidations.swift */,
|
||||||
|
9CBCB29E2BE4E13A007D7934 /* ValidatorClass.swift */,
|
||||||
);
|
);
|
||||||
path = Validations;
|
path = Validations;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -255,14 +272,15 @@
|
|||||||
523ED25C2BDA2BC700CFED02 /* WOKA */ = {
|
523ED25C2BDA2BC700CFED02 /* WOKA */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9CBCB2A62BE5104F007D7934 /* Home */,
|
||||||
52C6E01F2BE3ADD800E22D59 /* Default Enum */,
|
52C6E01F2BE3ADD800E22D59 /* Default Enum */,
|
||||||
9C56E83E2BDBE4FB00E4CA14 /* Authentication */,
|
9C56E83E2BDBE4FB00E4CA14 /* Authentication */,
|
||||||
|
523ED28E2BDA372C00CFED02 /* OnBoarding Module */,
|
||||||
9C27E1612BDB6F0F00EC1DA9 /* Main */,
|
9C27E1612BDB6F0F00EC1DA9 /* Main */,
|
||||||
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
|
9C27E15E2BDB6E4F00EC1DA9 /* Localized Module */,
|
||||||
52C8B0552BDA57CE003B51D0 /* Constants K */,
|
52C8B0552BDA57CE003B51D0 /* Constants K */,
|
||||||
52C8B0512BDA4B51003B51D0 /* Helpers */,
|
52C8B0512BDA4B51003B51D0 /* Helpers */,
|
||||||
523ED2932BDA3D0100CFED02 /* Assets */,
|
523ED2932BDA3D0100CFED02 /* Assets */,
|
||||||
523ED28E2BDA372C00CFED02 /* OnBoarding Module */,
|
|
||||||
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
|
523ED2682BDA2BC900CFED02 /* LaunchScreen.storyboard */,
|
||||||
523ED26B2BDA2BC900CFED02 /* Info.plist */,
|
523ED26B2BDA2BC900CFED02 /* Info.plist */,
|
||||||
);
|
);
|
||||||
@@ -392,6 +410,7 @@
|
|||||||
5202AAFD2BDF90590043B7BD /* TextFieldImage.swift */,
|
5202AAFD2BDF90590043B7BD /* TextFieldImage.swift */,
|
||||||
52663FF42BDFAB830001D8CE /* TextFieldErrorView.swift */,
|
52663FF42BDFAB830001D8CE /* TextFieldErrorView.swift */,
|
||||||
52663FFA2BDFB1700001D8CE /* TextFieldShadow.swift */,
|
52663FFA2BDFB1700001D8CE /* TextFieldShadow.swift */,
|
||||||
|
9CBCB2A02BE4E50A007D7934 /* TextFieldPassword.swift */,
|
||||||
);
|
);
|
||||||
path = "UIElements Helper";
|
path = "UIElements Helper";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -484,6 +503,7 @@
|
|||||||
5272FCE42BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift */,
|
5272FCE42BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift */,
|
||||||
52CA28FB2BE11A0400708B49 /* UserIntrestVM.swift */,
|
52CA28FB2BE11A0400708B49 /* UserIntrestVM.swift */,
|
||||||
52C6E0282BE3B52500E22D59 /* SelectAvatarVM.swift */,
|
52C6E0282BE3B52500E22D59 /* SelectAvatarVM.swift */,
|
||||||
|
9CBCB29C2BE4D6BB007D7934 /* LoginVM.swift */,
|
||||||
);
|
);
|
||||||
path = ViewModel;
|
path = ViewModel;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -496,10 +516,22 @@
|
|||||||
5272FCE22BDFDB05000ECB1D /* UserDetailsRegisterVC.swift */,
|
5272FCE22BDFDB05000ECB1D /* UserDetailsRegisterVC.swift */,
|
||||||
52CA28F92BE119F500708B49 /* UserIntrestVC.swift */,
|
52CA28F92BE119F500708B49 /* UserIntrestVC.swift */,
|
||||||
52C6E0222BE3B3E300E22D59 /* SelectAvatarVC.swift */,
|
52C6E0222BE3B3E300E22D59 /* SelectAvatarVC.swift */,
|
||||||
|
9CBCB29A2BE4D614007D7934 /* LoginVC.swift */,
|
||||||
|
9CBCB2A22BE50C95007D7934 /* ResetPassUserNameVC.swift */,
|
||||||
|
9CBCB2A42BE50D49007D7934 /* NewPasswordVC.swift */,
|
||||||
);
|
);
|
||||||
path = Controller;
|
path = Controller;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
9CBCB2A62BE5104F007D7934 /* Home */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
9CBCB2A72BE5105A007D7934 /* Home.storyboard */,
|
||||||
|
9CBCB2A92BE51A52007D7934 /* HomeVC.swift */,
|
||||||
|
);
|
||||||
|
path = Home;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
9CDCE1432BDB9B64003FEF11 /* Sounds */ = {
|
9CDCE1432BDB9B64003FEF11 /* Sounds */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -623,6 +655,7 @@
|
|||||||
9C27E1732BDB86B600EC1DA9 /* OnBoardCell.xib in Resources */,
|
9C27E1732BDB86B600EC1DA9 /* OnBoardCell.xib in Resources */,
|
||||||
9CDCE1452BDB9B9A003FEF11 /* OnBoardMainSound.m4a in Resources */,
|
9CDCE1452BDB9B9A003FEF11 /* OnBoardMainSound.m4a in Resources */,
|
||||||
9C56E84B2BDBF03F00E4CA14 /* AuthenticationSB.storyboard in Resources */,
|
9C56E84B2BDBF03F00E4CA14 /* AuthenticationSB.storyboard in Resources */,
|
||||||
|
9CBCB2A82BE5105A007D7934 /* Home.storyboard in Resources */,
|
||||||
52C8B0632BDA6993003B51D0 /* Localizable.strings in Resources */,
|
52C8B0632BDA6993003B51D0 /* Localizable.strings in Resources */,
|
||||||
9C56E8382BDBC3F000E4CA14 /* Exo2-ExtraBold.ttf in Resources */,
|
9C56E8382BDBC3F000E4CA14 /* Exo2-ExtraBold.ttf in Resources */,
|
||||||
9C56E8372BDBC3F000E4CA14 /* Exo2-Thin.ttf in Resources */,
|
9C56E8372BDBC3F000E4CA14 /* Exo2-Thin.ttf in Resources */,
|
||||||
@@ -726,16 +759,23 @@
|
|||||||
52C6E01B2BE383C000E22D59 /* YourIntrestCell.swift in Sources */,
|
52C6E01B2BE383C000E22D59 /* YourIntrestCell.swift in Sources */,
|
||||||
523ED25E2BDA2BC700CFED02 /* AppDelegate.swift in Sources */,
|
523ED25E2BDA2BC700CFED02 /* AppDelegate.swift in Sources */,
|
||||||
52D774ED2BDFC13F001D87DE /* OTPVM.swift in Sources */,
|
52D774ED2BDFC13F001D87DE /* OTPVM.swift in Sources */,
|
||||||
|
9CBCB2A32BE50C95007D7934 /* ResetPassUserNameVC.swift in Sources */,
|
||||||
|
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */,
|
||||||
|
9CBCB29F2BE4E13A007D7934 /* ValidatorClass.swift in Sources */,
|
||||||
|
9CBCB29B2BE4D614007D7934 /* LoginVC.swift in Sources */,
|
||||||
9C56E83B2BDBC6E600E4CA14 /* SelectAgeVM.swift in Sources */,
|
9C56E83B2BDBC6E600E4CA14 /* SelectAgeVM.swift in Sources */,
|
||||||
52CA28FA2BE119F500708B49 /* UserIntrestVC.swift in Sources */,
|
52CA28FA2BE119F500708B49 /* UserIntrestVC.swift in Sources */,
|
||||||
9C27E16B2BDB774D00EC1DA9 /* CarouselData.swift in Sources */,
|
9C27E16B2BDB774D00EC1DA9 /* CarouselData.swift in Sources */,
|
||||||
523ED2602BDA2BC700CFED02 /* SceneDelegate.swift in Sources */,
|
523ED2602BDA2BC700CFED02 /* SceneDelegate.swift in Sources */,
|
||||||
|
9CBCB2AA2BE51A52007D7934 /* HomeVC.swift in Sources */,
|
||||||
52D774E92BDFBDA4001D87DE /* AuthenticationStringConstant.swift in Sources */,
|
52D774E92BDFBDA4001D87DE /* AuthenticationStringConstant.swift in Sources */,
|
||||||
9C27E1672BDB706700EC1DA9 /* StoryBoard.swift in Sources */,
|
9C27E1672BDB706700EC1DA9 /* StoryBoard.swift in Sources */,
|
||||||
52C8B0692BDA6E1E003B51D0 /* LocalizedEnum.swift in Sources */,
|
52C8B0692BDA6E1E003B51D0 /* LocalizedEnum.swift in Sources */,
|
||||||
52C6E01E2BE3847F00E22D59 /* BorderView.swift in Sources */,
|
52C6E01E2BE3847F00E22D59 /* BorderView.swift in Sources */,
|
||||||
52C8B0742BDA7626003B51D0 /* OnBoardVC.swift in Sources */,
|
52C8B0742BDA7626003B51D0 /* OnBoardVC.swift in Sources */,
|
||||||
|
9CBCB2A12BE4E50A007D7934 /* TextFieldPassword.swift in Sources */,
|
||||||
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */,
|
9C56E8482BDBEFAB00E4CA14 /* AssetColor.swift in Sources */,
|
||||||
|
9CBCB29D2BE4D6BB007D7934 /* LoginVM.swift in Sources */,
|
||||||
5272FCE52BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift in Sources */,
|
5272FCE52BDFDC8C000ECB1D /* UserDetailsRegisterVM.swift in Sources */,
|
||||||
9C27E1652BDB6FBC00EC1DA9 /* StoryBoardID.swift in Sources */,
|
9C27E1652BDB6FBC00EC1DA9 /* StoryBoardID.swift in Sources */,
|
||||||
9C27E1722BDB86B600EC1DA9 /* OnBoardCell.swift in Sources */,
|
9C27E1722BDB86B600EC1DA9 /* OnBoardCell.swift in Sources */,
|
||||||
|
|||||||
@@ -13,6 +13,9 @@
|
|||||||
<array key="Exo2-Bold.ttf">
|
<array key="Exo2-Bold.ttf">
|
||||||
<string>Exo2-Bold</string>
|
<string>Exo2-Bold</string>
|
||||||
</array>
|
</array>
|
||||||
|
<array key="Exo2-ExtraBold.ttf">
|
||||||
|
<string>Exo2-ExtraBold</string>
|
||||||
|
</array>
|
||||||
<array key="Exo2-Medium.ttf">
|
<array key="Exo2-Medium.ttf">
|
||||||
<string>Exo2-Medium</string>
|
<string>Exo2-Medium</string>
|
||||||
</array>
|
</array>
|
||||||
@@ -748,6 +751,7 @@ Sent to Your Parent’s Email</string>
|
|||||||
</state>
|
</state>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="nextBtnTapped:" destination="Yeg-Vy-0ZA" eventType="touchUpInside" id="8WI-0P-0bu"/>
|
<action selector="nextBtnTapped:" destination="Yeg-Vy-0ZA" eventType="touchUpInside" id="8WI-0P-0bu"/>
|
||||||
|
<action selector="nextBtnTapped:" destination="0J9-HF-tOK" eventType="touchUpInside" id="nur-Bo-12q"/>
|
||||||
</connections>
|
</connections>
|
||||||
</button>
|
</button>
|
||||||
</subviews>
|
</subviews>
|
||||||
@@ -770,37 +774,568 @@ Sent to Your Parent’s Email</string>
|
|||||||
<navigationItem key="navigationItem" id="IZ3-42-UXo"/>
|
<navigationItem key="navigationItem" id="IZ3-42-UXo"/>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="collectionView" destination="1uh-3v-vfA" id="RGK-16-LPn"/>
|
<outlet property="collectionView" destination="1uh-3v-vfA" id="RGK-16-LPn"/>
|
||||||
|
<outlet property="nextBtn" destination="1hT-hu-cP2" id="mxz-X4-NVu"/>
|
||||||
</connections>
|
</connections>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="pn4-St-f6P" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="pn4-St-f6P" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="2324.6376811594205" y="-27.455357142857142"/>
|
<point key="canvasLocation" x="2324.6376811594205" y="-27.455357142857142"/>
|
||||||
</scene>
|
</scene>
|
||||||
|
<!--LoginVC-->
|
||||||
|
<scene sceneID="Vqq-Tk-AoX">
|
||||||
|
<objects>
|
||||||
|
<viewController storyboardIdentifier="LoginVC" id="vuc-DA-J2M" customClass="LoginVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="IaD-iX-nYV">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="Cj9-TI-6RF">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
</imageView>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="dYE-pF-NG5">
|
||||||
|
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="140" id="E5x-0b-APB"/>
|
||||||
|
<constraint firstAttribute="width" secondItem="dYE-pF-NG5" secondAttribute="height" multiplier="8:3" id="FBp-5c-Tze"/>
|
||||||
|
</constraints>
|
||||||
|
</imageView>
|
||||||
|
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M5Q-DD-j9X">
|
||||||
|
<rect key="frame" x="0.0" y="107.5" width="414" height="754.5"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="aNK-S5-pik">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="763.5"/>
|
||||||
|
<subviews>
|
||||||
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Y9q-mR-AlW">
|
||||||
|
<rect key="frame" x="20" y="0.0" width="374" height="60"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</view>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="Krs-Zs-R6t">
|
||||||
|
<rect key="frame" x="20" y="60" width="374" height="447.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Login to WOKA" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1T4-5K-cXT" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="32.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-ExtraBold" family="Exo 2" pointSize="27"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="30" translatesAutoresizingMaskIntoConstraints="NO" id="EhK-1C-Xey">
|
||||||
|
<rect key="frame" x="0.0" y="102.5" width="374" height="345"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="krT-0d-tCQ">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="99.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Xc-wy-9mu" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="19.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="68c-1b-KSI" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="34.5" width="374" height="50"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="QFZ-cU-qXh"/>
|
||||||
|
</constraints>
|
||||||
|
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="username"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</textField>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JQm-yr-A2M">
|
||||||
|
<rect key="frame" x="0.0" y="99.5" width="374" height="0.0"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="fVp-fO-1fH">
|
||||||
|
<rect key="frame" x="0.0" y="129.5" width="374" height="135.5"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="ebQ-va-83Q">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="99.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BcT-5f-ded" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="19.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="iJE-dm-qal" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="34.5" width="374" height="50"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="iFK-gL-o8o"/>
|
||||||
|
</constraints>
|
||||||
|
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" spellCheckingType="no" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" smartQuotesType="no" textContentType="password"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</textField>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2YT-HL-ug7">
|
||||||
|
<rect key="frame" x="0.0" y="99.5" width="374" height="0.0"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yp6-2q-OZC">
|
||||||
|
<rect key="frame" x="0.0" y="104.5" width="374" height="31"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<state key="normal" title="Button"/>
|
||||||
|
<buttonConfiguration key="configuration" style="plain" title="Forget Password?">
|
||||||
|
<fontDescription key="titleFontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
|
||||||
|
</buttonConfiguration>
|
||||||
|
<connections>
|
||||||
|
<action selector="forgotPasswordBtnTapped:" destination="vuc-DA-J2M" eventType="touchUpInside" id="2dS-KN-qUj"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OFt-kx-VfD" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="295" width="374" height="50"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="Tle-PZ-1B4"/>
|
||||||
|
</constraints>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||||
|
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||||
|
<state key="normal" title="LOGIN">
|
||||||
|
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</state>
|
||||||
|
<connections>
|
||||||
|
<action selector="loginBtnTapped:" destination="vuc-DA-J2M" eventType="touchUpInside" id="ZJk-AD-fA1"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tOZ-1S-7K5">
|
||||||
|
<rect key="frame" x="20" y="507.5" width="374" height="120"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</view>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="20" translatesAutoresizingMaskIntoConstraints="NO" id="Nnb-iQ-OQs">
|
||||||
|
<rect key="frame" x="20" y="627.5" width="374" height="106"/>
|
||||||
|
<subviews>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ly3-jW-G7X">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="374" height="36"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<state key="normal" title="Button"/>
|
||||||
|
<buttonConfiguration key="configuration" style="plain">
|
||||||
|
<attributedString key="attributedTitle">
|
||||||
|
<fragment content="Continue as a Guest">
|
||||||
|
<attributes>
|
||||||
|
<font key="NSFont" size="18" name="Exo2-Bold"/>
|
||||||
|
</attributes>
|
||||||
|
</fragment>
|
||||||
|
</attributedString>
|
||||||
|
</buttonConfiguration>
|
||||||
|
<connections>
|
||||||
|
<action selector="continueGuestBtnTapped:" destination="vuc-DA-J2M" eventType="touchUpInside" id="50B-ge-oNj"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TYc-dA-ZOV" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="56" width="374" height="50"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="sfz-a2-WZy"/>
|
||||||
|
</constraints>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||||
|
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||||
|
<state key="normal" title="CREATE YOUR ACCOUNT">
|
||||||
|
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</state>
|
||||||
|
<connections>
|
||||||
|
<action selector="createAccountBtnTapped:" destination="vuc-DA-J2M" eventType="touchUpInside" id="j69-S9-zNt"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sb4-yj-JJ2">
|
||||||
|
<rect key="frame" x="20" y="733.5" width="374" height="30"/>
|
||||||
|
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="30" id="RxX-pL-7Ux"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
</subviews>
|
||||||
|
<edgeInsets key="layoutMargins" top="0.0" left="20" bottom="0.0" right="20"/>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="aNK-S5-pik" secondAttribute="bottom" id="Yab-xI-uDs"/>
|
||||||
|
<constraint firstItem="aNK-S5-pik" firstAttribute="width" secondItem="gMF-YJ-fMn" secondAttribute="width" id="fww-B0-cxA"/>
|
||||||
|
<constraint firstItem="aNK-S5-pik" firstAttribute="top" secondItem="M5Q-DD-j9X" secondAttribute="top" id="vhU-9a-AHd"/>
|
||||||
|
<constraint firstItem="aNK-S5-pik" firstAttribute="leading" secondItem="QBx-4m-i11" secondAttribute="leading" id="ysE-q7-TkF"/>
|
||||||
|
<constraint firstItem="QBx-4m-i11" firstAttribute="trailing" secondItem="aNK-S5-pik" secondAttribute="trailing" id="zog-u4-gIj"/>
|
||||||
|
</constraints>
|
||||||
|
<viewLayoutGuide key="contentLayoutGuide" id="gMF-YJ-fMn"/>
|
||||||
|
<viewLayoutGuide key="frameLayoutGuide" id="QBx-4m-i11"/>
|
||||||
|
</scrollView>
|
||||||
|
</subviews>
|
||||||
|
<viewLayoutGuide key="safeArea" id="Zsp-nJ-qp9"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="M5Q-DD-j9X" firstAttribute="leading" secondItem="Zsp-nJ-qp9" secondAttribute="leading" id="4yA-9T-cp6"/>
|
||||||
|
<constraint firstItem="dYE-pF-NG5" firstAttribute="centerX" secondItem="Cj9-TI-6RF" secondAttribute="centerX" id="77b-sh-rCd"/>
|
||||||
|
<constraint firstItem="dYE-pF-NG5" firstAttribute="top" secondItem="IaD-iX-nYV" secondAttribute="top" constant="50" id="Giv-mD-nra"/>
|
||||||
|
<constraint firstItem="Cj9-TI-6RF" firstAttribute="top" secondItem="IaD-iX-nYV" secondAttribute="top" id="Lby-HC-PDt"/>
|
||||||
|
<constraint firstItem="M5Q-DD-j9X" firstAttribute="trailing" secondItem="Zsp-nJ-qp9" secondAttribute="trailing" id="LgS-lp-LLz"/>
|
||||||
|
<constraint firstItem="M5Q-DD-j9X" firstAttribute="bottom" secondItem="Zsp-nJ-qp9" secondAttribute="bottom" id="Lqk-CU-79j"/>
|
||||||
|
<constraint firstItem="tOZ-1S-7K5" firstAttribute="height" secondItem="IaD-iX-nYV" secondAttribute="height" multiplier="0.133929" id="aNx-6t-F1y"/>
|
||||||
|
<constraint firstItem="Y9q-mR-AlW" firstAttribute="height" secondItem="IaD-iX-nYV" secondAttribute="height" multiplier="0.0669643" id="bis-6D-vXV"/>
|
||||||
|
<constraint firstItem="Zsp-nJ-qp9" firstAttribute="trailing" secondItem="Cj9-TI-6RF" secondAttribute="trailing" id="eJ6-Tf-lTr"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="Cj9-TI-6RF" secondAttribute="bottom" id="gSV-I3-q1H"/>
|
||||||
|
<constraint firstItem="M5Q-DD-j9X" firstAttribute="top" secondItem="dYE-pF-NG5" secondAttribute="bottom" constant="5" id="rm0-7u-I5r"/>
|
||||||
|
<constraint firstItem="Cj9-TI-6RF" firstAttribute="leading" secondItem="Zsp-nJ-qp9" secondAttribute="leading" id="sEZ-hv-yKh"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<navigationItem key="navigationItem" id="0VJ-00-N9Z"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="createAccountBtn" destination="TYc-dA-ZOV" id="gJn-Uv-ulJ"/>
|
||||||
|
<outlet property="loginBtn" destination="OFt-kx-VfD" id="IYL-gk-Q1B"/>
|
||||||
|
<outlet property="passwordTF" destination="iJE-dm-qal" id="8KX-Vs-K9a"/>
|
||||||
|
<outlet property="userNameTF" destination="68c-1b-KSI" id="L8R-yu-4Um"/>
|
||||||
|
</connections>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Mdc-Fp-9OO" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="3098.5507246376815" y="-27.455357142857142"/>
|
||||||
|
</scene>
|
||||||
|
<!--Reset Pass User NameVC-->
|
||||||
|
<scene sceneID="h7R-p4-2q6">
|
||||||
|
<objects>
|
||||||
|
<viewController storyboardIdentifier="ResetPassUserNameVC" id="zmU-4d-wMC" customClass="ResetPassUserNameVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="Sgi-hQ-Gsy">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="aMz-cV-9jf">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
</imageView>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="Uo0-KI-88t">
|
||||||
|
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" constant="140" id="Ea4-eb-ysK"/>
|
||||||
|
<constraint firstAttribute="width" secondItem="Uo0-KI-88t" secondAttribute="height" multiplier="8:3" id="TXC-lz-9Jd"/>
|
||||||
|
</constraints>
|
||||||
|
</imageView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="Pjf-i3-BcY">
|
||||||
|
<rect key="frame" x="20" y="172.5" width="374" height="203.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Forgot your Password?" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="i7M-Ob-pCE" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="10" y="0.0" width="354" height="34"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="28"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="Jlq-Ct-Mrz">
|
||||||
|
<rect key="frame" x="10" y="104" width="354" height="99.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PLEASE GIVE US YOUR USERNAME" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fCB-jL-yE4">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter your username" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="wy2-0C-rxG" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="YyN-bh-K2y"/>
|
||||||
|
</constraints>
|
||||||
|
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" textContentType="username"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</textField>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0ps-Ku-87z">
|
||||||
|
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
|
||||||
|
</stackView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="NPA-IJ-SA5">
|
||||||
|
<rect key="frame" x="30" y="740" width="354" height="102"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="We will send a reset code to their email" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uv4-iY-Z87" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="17"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="14"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="JJ0-wA-EP6" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="52" width="354" height="50"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="I7D-T4-sU1"/>
|
||||||
|
</constraints>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||||
|
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||||
|
<state key="normal" title="Next">
|
||||||
|
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</state>
|
||||||
|
<connections>
|
||||||
|
<action selector="nextBtnTapped:" destination="zmU-4d-wMC" eventType="touchUpInside" id="cqW-Oq-dSf"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<viewLayoutGuide key="safeArea" id="4Mi-am-PaN"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="NPA-IJ-SA5" firstAttribute="leading" secondItem="4Mi-am-PaN" secondAttribute="leading" constant="30" id="267-Lx-b3h"/>
|
||||||
|
<constraint firstItem="Pjf-i3-BcY" firstAttribute="leading" secondItem="Sgi-hQ-Gsy" secondAttribute="leading" constant="20" id="8II-uO-ceT"/>
|
||||||
|
<constraint firstItem="4Mi-am-PaN" firstAttribute="bottom" secondItem="NPA-IJ-SA5" secondAttribute="bottom" constant="20" id="DQ5-nN-Wx9"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="aMz-cV-9jf" secondAttribute="bottom" id="DbW-FE-AVi"/>
|
||||||
|
<constraint firstItem="Uo0-KI-88t" firstAttribute="top" secondItem="Sgi-hQ-Gsy" secondAttribute="top" constant="50" id="Fg4-I1-ech"/>
|
||||||
|
<constraint firstItem="Uo0-KI-88t" firstAttribute="centerX" secondItem="aMz-cV-9jf" secondAttribute="centerX" id="RA9-fg-PGi"/>
|
||||||
|
<constraint firstItem="4Mi-am-PaN" firstAttribute="trailing" secondItem="aMz-cV-9jf" secondAttribute="trailing" id="bJs-tK-NGq"/>
|
||||||
|
<constraint firstItem="aMz-cV-9jf" firstAttribute="leading" secondItem="4Mi-am-PaN" secondAttribute="leading" id="bgL-dp-5y5"/>
|
||||||
|
<constraint firstItem="Pjf-i3-BcY" firstAttribute="top" secondItem="Uo0-KI-88t" secondAttribute="bottom" constant="70" id="c06-a0-QcI"/>
|
||||||
|
<constraint firstItem="aMz-cV-9jf" firstAttribute="top" secondItem="Sgi-hQ-Gsy" secondAttribute="top" id="cvI-QK-Nqi"/>
|
||||||
|
<constraint firstItem="4Mi-am-PaN" firstAttribute="trailing" secondItem="Pjf-i3-BcY" secondAttribute="trailing" constant="20" id="mgQ-lh-7DR"/>
|
||||||
|
<constraint firstItem="4Mi-am-PaN" firstAttribute="trailing" secondItem="NPA-IJ-SA5" secondAttribute="trailing" constant="30" id="tUr-oQ-Mes"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<navigationItem key="navigationItem" id="975-te-jRq"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="nextBtn" destination="JJ0-wA-EP6" id="SN3-SU-mKC"/>
|
||||||
|
<outlet property="usernameTF" destination="wy2-0C-rxG" id="crD-a5-z94"/>
|
||||||
|
</connections>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="wVm-3F-iVK" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="-697" y="710"/>
|
||||||
|
</scene>
|
||||||
|
<!--New PasswordVC-->
|
||||||
|
<scene sceneID="abb-yD-DLq">
|
||||||
|
<objects>
|
||||||
|
<viewController storyboardIdentifier="NewPasswordVC" id="1Pn-iP-PaH" customClass="NewPasswordVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="rCr-gA-4WT">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BackgroundSplash" translatesAutoresizingMaskIntoConstraints="NO" id="GmS-tq-ip2">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||||
|
</imageView>
|
||||||
|
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WokaLogo" translatesAutoresizingMaskIntoConstraints="NO" id="hZr-H0-7JS">
|
||||||
|
<rect key="frame" x="137" y="50" width="140" height="52.5"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="hZr-H0-7JS" secondAttribute="height" multiplier="8:3" id="Qc1-Qm-zOF"/>
|
||||||
|
<constraint firstAttribute="width" constant="140" id="xPX-2T-bLP"/>
|
||||||
|
</constraints>
|
||||||
|
</imageView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="70" translatesAutoresizingMaskIntoConstraints="NO" id="ph5-wC-m3B">
|
||||||
|
<rect key="frame" x="20" y="172.5" width="374" height="341.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Great! Select New Password" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QGk-Uc-mER" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="10" y="0.0" width="354" height="32.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="27"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="40" translatesAutoresizingMaskIntoConstraints="NO" id="qzU-f1-tq1">
|
||||||
|
<rect key="frame" x="10" y="102.5" width="354" height="239"/>
|
||||||
|
<subviews>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="1na-3A-stg">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="99.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CREATE YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hYw-Vc-C9h">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="Enter new password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Skx-Ig-91N" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="3wW-lU-Xuy"/>
|
||||||
|
</constraints>
|
||||||
|
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" textContentType="username"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</textField>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ht0-v3-TeN">
|
||||||
|
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="Rwa-zV-eg9">
|
||||||
|
<rect key="frame" x="0.0" y="139.5" width="354" height="99.5"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CONFIRM YOUR PASSWORD" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6LZ-Ed-gCK">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="19.5"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="248" contentHorizontalAlignment="left" contentVerticalAlignment="center" placeholder="confirm your password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="JRR-Bk-5UP" customClass="TextFieldShadow" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="34.5" width="354" height="50"/>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<color key="tintColor" name="TextDarkBlue"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="02n-lw-EMz"/>
|
||||||
|
</constraints>
|
||||||
|
<color key="textColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="16"/>
|
||||||
|
<textInputTraits key="textInputTraits" autocorrectionType="no" enablesReturnKeyAutomatically="YES" secureTextEntry="YES" textContentType="username"/>
|
||||||
|
<userDefinedRuntimeAttributes>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingLeftCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
<userDefinedRuntimeAttribute type="number" keyPath="paddingRightCustom">
|
||||||
|
<real key="value" value="25"/>
|
||||||
|
</userDefinedRuntimeAttribute>
|
||||||
|
</userDefinedRuntimeAttributes>
|
||||||
|
</textField>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="B3H-EX-OA7">
|
||||||
|
<rect key="frame" x="0.0" y="99.5" width="354" height="0.0"/>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="16"/>
|
||||||
|
<color key="textColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
|
||||||
|
</stackView>
|
||||||
|
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="35" translatesAutoresizingMaskIntoConstraints="NO" id="Ut5-b1-5tm">
|
||||||
|
<rect key="frame" x="30" y="792" width="354" height="50"/>
|
||||||
|
<subviews>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Ebp-9w-EVJ" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="354" height="50"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="50" id="7q3-na-OZp"/>
|
||||||
|
</constraints>
|
||||||
|
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||||
|
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||||
|
<state key="normal" title="Next">
|
||||||
|
<color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
</state>
|
||||||
|
<connections>
|
||||||
|
<action selector="nextBtnTapped:" destination="1Pn-iP-PaH" eventType="touchUpInside" id="E7a-9h-e3K"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
</stackView>
|
||||||
|
</subviews>
|
||||||
|
<viewLayoutGuide key="safeArea" id="2M0-gy-xp9"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="2M0-gy-xp9" firstAttribute="trailing" secondItem="ph5-wC-m3B" secondAttribute="trailing" constant="20" id="1b8-2X-1Z5"/>
|
||||||
|
<constraint firstItem="2M0-gy-xp9" firstAttribute="trailing" secondItem="Ut5-b1-5tm" secondAttribute="trailing" constant="30" id="542-cA-91i"/>
|
||||||
|
<constraint firstItem="Ut5-b1-5tm" firstAttribute="leading" secondItem="2M0-gy-xp9" secondAttribute="leading" constant="30" id="72w-RI-Im2"/>
|
||||||
|
<constraint firstItem="hZr-H0-7JS" firstAttribute="centerX" secondItem="GmS-tq-ip2" secondAttribute="centerX" id="AfR-d3-4fd"/>
|
||||||
|
<constraint firstItem="2M0-gy-xp9" firstAttribute="trailing" secondItem="GmS-tq-ip2" secondAttribute="trailing" id="RiP-3L-h7G"/>
|
||||||
|
<constraint firstItem="2M0-gy-xp9" firstAttribute="bottom" secondItem="Ut5-b1-5tm" secondAttribute="bottom" constant="20" id="d6m-eA-dnW"/>
|
||||||
|
<constraint firstItem="GmS-tq-ip2" firstAttribute="leading" secondItem="2M0-gy-xp9" secondAttribute="leading" id="gZq-iB-cKB"/>
|
||||||
|
<constraint firstItem="ph5-wC-m3B" firstAttribute="leading" secondItem="rCr-gA-4WT" secondAttribute="leading" constant="20" id="gvd-M9-qrc"/>
|
||||||
|
<constraint firstItem="ph5-wC-m3B" firstAttribute="top" secondItem="hZr-H0-7JS" secondAttribute="bottom" constant="70" id="kfm-vr-8gp"/>
|
||||||
|
<constraint firstItem="hZr-H0-7JS" firstAttribute="top" secondItem="rCr-gA-4WT" secondAttribute="top" constant="50" id="o48-8A-J8f"/>
|
||||||
|
<constraint firstItem="GmS-tq-ip2" firstAttribute="top" secondItem="rCr-gA-4WT" secondAttribute="top" id="ong-F3-ab1"/>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="GmS-tq-ip2" secondAttribute="bottom" id="q8F-dc-EZc"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<navigationItem key="navigationItem" id="Xqd-yw-Ag4"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="confirmPassTF" destination="JRR-Bk-5UP" id="cCQ-al-nHe"/>
|
||||||
|
<outlet property="enterNewPasswordTF" destination="Skx-Ig-91N" id="fWU-Nf-cho"/>
|
||||||
|
<outlet property="nextBtn" destination="Ebp-9w-EVJ" id="7jP-pw-l87"/>
|
||||||
|
</connections>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="2VJ-VJ-m6t" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="41" y="710"/>
|
||||||
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<designables>
|
<designables>
|
||||||
<designable name="42K-Uu-lPQ">
|
<designable name="42K-Uu-lPQ">
|
||||||
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
||||||
</designable>
|
</designable>
|
||||||
<designable name="4gw-z0-s4a">
|
<designable name="4gw-z0-s4a">
|
||||||
<size key="intrinsicContentSize" width="200.5" height="21"/>
|
<size key="intrinsicContentSize" width="150.5" height="21"/>
|
||||||
|
</designable>
|
||||||
|
<designable name="68c-1b-KSI">
|
||||||
|
<size key="intrinsicContentSize" width="151.5" height="21"/>
|
||||||
</designable>
|
</designable>
|
||||||
<designable name="81S-Fa-CiD">
|
<designable name="81S-Fa-CiD">
|
||||||
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
||||||
</designable>
|
</designable>
|
||||||
<designable name="DSB-Ge-wNO">
|
<designable name="DSB-Ge-wNO">
|
||||||
<size key="intrinsicContentSize" width="169" height="21"/>
|
<size key="intrinsicContentSize" width="119" height="21"/>
|
||||||
</designable>
|
</designable>
|
||||||
<designable name="Hcd-Mm-IxW">
|
<designable name="Hcd-Mm-IxW">
|
||||||
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
||||||
</designable>
|
</designable>
|
||||||
|
<designable name="JRR-Bk-5UP">
|
||||||
|
<size key="intrinsicContentSize" width="168" height="20"/>
|
||||||
|
</designable>
|
||||||
<designable name="MpT-bm-drv">
|
<designable name="MpT-bm-drv">
|
||||||
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
<size key="intrinsicContentSize" width="8.5" height="23.5"/>
|
||||||
</designable>
|
</designable>
|
||||||
|
<designable name="Skx-Ig-91N">
|
||||||
|
<size key="intrinsicContentSize" width="149" height="20"/>
|
||||||
|
</designable>
|
||||||
|
<designable name="iJE-dm-qal">
|
||||||
|
<size key="intrinsicContentSize" width="150.5" height="20"/>
|
||||||
|
</designable>
|
||||||
<designable name="m50-FZ-yVO">
|
<designable name="m50-FZ-yVO">
|
||||||
<size key="intrinsicContentSize" width="201.5" height="21"/>
|
<size key="intrinsicContentSize" width="151.5" height="21"/>
|
||||||
</designable>
|
</designable>
|
||||||
<designable name="tgW-LH-XfR">
|
<designable name="tgW-LH-XfR">
|
||||||
<size key="intrinsicContentSize" width="169.5" height="21"/>
|
<size key="intrinsicContentSize" width="119.5" height="21"/>
|
||||||
|
</designable>
|
||||||
|
<designable name="wy2-0C-rxG">
|
||||||
|
<size key="intrinsicContentSize" width="151.5" height="21"/>
|
||||||
</designable>
|
</designable>
|
||||||
</designables>
|
</designables>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@@ -9,21 +9,64 @@ import UIKit
|
|||||||
|
|
||||||
class LoginVC: UIViewController {
|
class LoginVC: UIViewController {
|
||||||
|
|
||||||
|
@IBOutlet weak var loginBtn: LocalisedElementsButton!
|
||||||
|
@IBOutlet weak var createAccountBtn: LocalisedElementsButton!
|
||||||
|
@IBOutlet weak var userNameTF: TextFieldShadow!
|
||||||
|
@IBOutlet weak var passwordTF: TextFieldShadow!
|
||||||
|
@IBOutlet weak var passwordStack: UIStackView!
|
||||||
|
@IBOutlet weak var passwordEyeBtn: UIButton!
|
||||||
|
|
||||||
|
var vm = LoginVM()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
vm.vc = self
|
||||||
// Do any additional setup after loading the view.
|
vm.initView()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBAction func loginBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
/*
|
}
|
||||||
// MARK: - Navigation
|
|
||||||
|
@IBAction func createAccountBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
|
||||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.selectAgeVC) as! SelectAgeVC
|
||||||
// Get the new view controller using segue.destination.
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
// Pass the selected object to the new view controller.
|
}
|
||||||
|
|
||||||
|
@IBAction func continueGuestBtnTapped(_ sender: UIButton) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@IBAction func forgotPasswordBtnTapped(_ sender: UIButton) {
|
||||||
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.resetPassUserNameVC) as! ResetPassUserNameVC
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// MARK: - Textfield Delegate
|
||||||
|
|
||||||
|
extension LoginVC : UITextFieldDelegate{
|
||||||
|
|
||||||
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
||||||
|
switch textField{
|
||||||
|
case passwordTF:
|
||||||
|
let currentString = (textField.text ?? "") as NSString
|
||||||
|
let newString = currentString.replacingCharacters(in: range, with: string)
|
||||||
|
newString.count == 0 ? (textField.rightView?.isHidden = true) : (textField.rightView?.isHidden = false)
|
||||||
|
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||||
|
switch textField{
|
||||||
|
case passwordTF:
|
||||||
|
self.view.endEditing(true)
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,21 +9,57 @@ import UIKit
|
|||||||
|
|
||||||
class NewPasswordVC: UIViewController {
|
class NewPasswordVC: UIViewController {
|
||||||
|
|
||||||
|
@IBOutlet weak var enterNewPasswordTF: TextFieldShadow!
|
||||||
|
@IBOutlet weak var confirmPassTF: TextFieldShadow!
|
||||||
|
@IBOutlet weak var nextBtn: LocalisedElementsButton!
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
initView()
|
||||||
// Do any additional setup after loading the view.
|
enterNewPasswordTF.enablePasswordToggle()
|
||||||
|
confirmPassTF.enablePasswordToggle()
|
||||||
|
enterNewPasswordTF.delegate = self
|
||||||
|
confirmPassTF.delegate = self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initView(){
|
||||||
/*
|
enterNewPasswordTF.roundCorner()
|
||||||
// MARK: - Navigation
|
confirmPassTF.roundCorner()
|
||||||
|
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
|
||||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
|
||||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
||||||
// Get the new view controller using segue.destination.
|
}
|
||||||
// Pass the selected object to the new view controller.
|
|
||||||
|
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Textfield Delegate
|
||||||
|
|
||||||
|
extension NewPasswordVC : UITextFieldDelegate{
|
||||||
|
|
||||||
|
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
||||||
|
switch textField{
|
||||||
|
case enterNewPasswordTF,confirmPassTF:
|
||||||
|
let currentString = (textField.text ?? "") as NSString
|
||||||
|
let newString = currentString.replacingCharacters(in: range, with: string)
|
||||||
|
newString.count == 0 ? (textField.rightView?.isHidden = true) : (textField.rightView?.isHidden = false)
|
||||||
|
return ValidatorClass.sharedInstanec.limitCharacter(length: 16,textField, shouldChangeCharactersIn: range, replacementString: string)
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
|
||||||
|
switch textField{
|
||||||
|
case enterNewPasswordTF:
|
||||||
|
self.confirmPassTF.becomeFirstResponder()
|
||||||
|
case confirmPassTF:
|
||||||
|
self.view.endEditing(true)
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,11 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
|
enum NavigateToVC{
|
||||||
|
case newPass
|
||||||
|
case registeration
|
||||||
|
}
|
||||||
|
|
||||||
class OTPVC : UIViewController{
|
class OTPVC : UIViewController{
|
||||||
|
|
||||||
@IBOutlet weak var wokaLogoTopConstriant: NSLayoutConstraint!
|
@IBOutlet weak var wokaLogoTopConstriant: NSLayoutConstraint!
|
||||||
@@ -22,6 +27,7 @@ class OTPVC : UIViewController{
|
|||||||
@IBOutlet weak var requestThemLabel: LocalisedElementsLabel!
|
@IBOutlet weak var requestThemLabel: LocalisedElementsLabel!
|
||||||
|
|
||||||
var vm = OTPVM()
|
var vm = OTPVM()
|
||||||
|
var navigateCheck = NavigateToVC.registeration
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
@@ -42,9 +48,17 @@ class OTPVC : UIViewController{
|
|||||||
// MARK: - Button Tap Handler
|
// MARK: - Button Tap Handler
|
||||||
|
|
||||||
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
|
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
switch self.navigateCheck{
|
||||||
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userDetailsRegisterVC) as! UserDetailsRegisterVC
|
case .newPass:
|
||||||
self.navigationController?.pushViewController(vc, animated: true)
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.newPasswordVC) as! NewPasswordVC
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
|
case .registeration:
|
||||||
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userDetailsRegisterVC) as! UserDetailsRegisterVC
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,21 +9,36 @@ import UIKit
|
|||||||
|
|
||||||
class ResetPassUserNameVC: UIViewController {
|
class ResetPassUserNameVC: UIViewController {
|
||||||
|
|
||||||
|
@IBOutlet weak var usernameTF: TextFieldShadow!
|
||||||
|
@IBOutlet weak var nextBtn: LocalisedElementsButton!
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
|
initView()
|
||||||
// Do any additional setup after loading the view.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func initView(){
|
||||||
/*
|
usernameTF.roundCorner()
|
||||||
// MARK: - Navigation
|
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
|
||||||
|
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
|
||||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
||||||
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
}
|
||||||
// Get the new view controller using segue.destination.
|
|
||||||
// Pass the selected object to the new view controller.
|
override func viewWillAppear(_ animated: Bool) {
|
||||||
|
super.viewWillAppear(animated)
|
||||||
|
navigationController?.setNavigationBarHidden(false, animated: animated)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func viewWillDisappear(_ animated: Bool) {
|
||||||
|
super.viewWillDisappear(animated)
|
||||||
|
navigationController?.setNavigationBarHidden(true, animated: animated)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.oTPVC) as! OTPVC
|
||||||
|
vc.navigateCheck = .newPass
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import UIKit
|
|||||||
class SelectAvatarVC: UIViewController {
|
class SelectAvatarVC: UIViewController {
|
||||||
|
|
||||||
@IBOutlet weak var collectionView: UICollectionView!
|
@IBOutlet weak var collectionView: UICollectionView!
|
||||||
|
@IBOutlet weak var nextBtn: LocalisedElementsButton!
|
||||||
|
|
||||||
var vm = SelectAvatarVM()
|
var vm = SelectAvatarVM()
|
||||||
|
|
||||||
@@ -28,6 +29,9 @@ class SelectAvatarVC: UIViewController {
|
|||||||
super.viewWillDisappear(animated)
|
super.viewWillDisappear(animated)
|
||||||
navigationController?.setNavigationBarHidden(true, animated: animated)
|
navigationController?.setNavigationBarHidden(true, animated: animated)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBAction func nextBtnTapped(_ sender: LocalisedElementsButton) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - CollectionView Delegate
|
// MARK: - CollectionView Delegate
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class SelectAvatarCell: UICollectionViewCell {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func layoutSubviews() {
|
override func layoutSubviews() {
|
||||||
self.outerView.roundCorner()
|
self.roundCorner()
|
||||||
}
|
}
|
||||||
|
|
||||||
func setData(){
|
func setData(){
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<objects>
|
<objects>
|
||||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" reuseIdentifier="SelectAvatarCell" id="gTV-IL-0wX" customClass="SelectAvatarCell" customModule="WOKA" customModuleProvider="target">
|
<collectionViewCell opaque="NO" multipleTouchEnabled="YES" contentMode="scaleToFill" reuseIdentifier="SelectAvatarCell" id="gTV-IL-0wX" customClass="SelectAvatarCell" customModule="WOKA" customModuleProvider="target">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="140" height="137"/>
|
<rect key="frame" x="0.0" y="0.0" width="140" height="137"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||||
|
|||||||
@@ -5,4 +5,36 @@
|
|||||||
// Created by Bilal on 03/05/2024.
|
// Created by Bilal on 03/05/2024.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import UIKit
|
||||||
|
|
||||||
|
class LoginVM{
|
||||||
|
|
||||||
|
weak var vc : LoginVC!
|
||||||
|
|
||||||
|
func initView(){
|
||||||
|
vc.passwordTF.delegate = self.vc
|
||||||
|
vc.userNameTF.delegate = self.vc
|
||||||
|
|
||||||
|
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
|
||||||
|
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
|
||||||
|
let color3 = #colorLiteral(red: 0.968627451, green: 0.7882352941, blue: 0.1294117647, alpha: 1)
|
||||||
|
let color4 = #colorLiteral(red: 0.968627451, green: 0.4196078431, blue: 0.1098039216, alpha: 1)
|
||||||
|
vc.createAccountBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
||||||
|
vc.createAccountBtn.roundCorner()
|
||||||
|
|
||||||
|
vc.loginBtn.applyGradient(colors: [color4, color3], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0, y: 0.8))
|
||||||
|
vc.loginBtn.roundCorner()
|
||||||
|
|
||||||
|
vc.passwordTF.roundCorner()
|
||||||
|
vc.userNameTF.roundCorner()
|
||||||
|
vc.passwordTF.enablePasswordToggle()
|
||||||
|
vc.passwordTF.rightView?.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to handle tap on Password Toggle icon
|
||||||
|
@objc func passwordIconTapped() {
|
||||||
|
vc.passwordTF.isSelected.toggle()
|
||||||
|
vc.passwordTF.isSecureTextEntry.toggle()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ class SelectAvatarVM{
|
|||||||
weak var vc : SelectAvatarVC!
|
weak var vc : SelectAvatarVC!
|
||||||
|
|
||||||
func initView(){
|
func initView(){
|
||||||
|
let color1 = #colorLiteral(red: 0.144693464, green: 0.1426281333, blue: 0.6686832905, alpha: 1)
|
||||||
|
let color2 = #colorLiteral(red: 0.6901960784, green: 0.2745098039, blue: 0.7568627451, alpha: 1)
|
||||||
|
vc.nextBtn.applyGradient(colors: [color1, color2], startPoint: CGPoint(x: 0, y: 0), endPoint: CGPoint(x: 0.8, y: 0))
|
||||||
|
vc.nextBtn.roundCorner()
|
||||||
setupCell()
|
setupCell()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,5 +12,6 @@ extension K{
|
|||||||
struct StoryBoard{
|
struct StoryBoard{
|
||||||
static let main = "Main"
|
static let main = "Main"
|
||||||
static let authenticationSB = "AuthenticationSB"
|
static let authenticationSB = "AuthenticationSB"
|
||||||
|
static let home = "Home"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,13 @@ extension K{
|
|||||||
static let userDetailsRegisterVC = "UserDetailsRegisterVC"
|
static let userDetailsRegisterVC = "UserDetailsRegisterVC"
|
||||||
static let userIntrestVC = "UserIntrestVC"
|
static let userIntrestVC = "UserIntrestVC"
|
||||||
static let selectAvatarVC = "SelectAvatarVC"
|
static let selectAvatarVC = "SelectAvatarVC"
|
||||||
|
static let loginVC = "LoginVC"
|
||||||
|
static let resetPassUserNameVC = "ResetPassUserNameVC"
|
||||||
|
static let newPasswordVC = "NewPasswordVC"
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Home{
|
||||||
|
static let homeVC = "HomeVC"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,12 +36,15 @@ extension UITextField {
|
|||||||
|
|
||||||
|
|
||||||
extension UITextField {
|
extension UITextField {
|
||||||
func addRightButton(title: String?, tintColor : UIColor, btnImage : UIImage?, target: Any?, action: Selector) {
|
func addRightButton(title: String?, tintColor : UIColor, btnImage : UIImage?, selectedImage : UIImage? = nil, target: Any?, action: Selector) {
|
||||||
// Create a button
|
// Create a button
|
||||||
let button = UIButton(type: .system)
|
let button = UIButton(type: .system)
|
||||||
button.setTitle(title, for: .normal)
|
button.setTitle(title, for: .normal)
|
||||||
button.addTarget(target, action: action, for: .touchUpInside)
|
button.addTarget(target, action: action, for: .touchUpInside)
|
||||||
button.setImage(btnImage, for: .normal)
|
button.setImage(btnImage, for: .normal)
|
||||||
|
if let selectedImage{
|
||||||
|
button.setImage(selectedImage, for: .selected)
|
||||||
|
}
|
||||||
button.tintColor = tintColor
|
button.tintColor = tintColor
|
||||||
button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)
|
button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)
|
||||||
// Set the button as the right view of the text field
|
// Set the button as the right view of the text field
|
||||||
|
|||||||
@@ -5,4 +5,29 @@
|
|||||||
// Created by Bilal on 03/05/2024.
|
// Created by Bilal on 03/05/2024.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import UIKit
|
||||||
|
|
||||||
|
extension UITextField {
|
||||||
|
fileprivate func setPasswordToggleImage(_ button: UIButton) {
|
||||||
|
if(isSecureTextEntry){
|
||||||
|
button.setImage(UIImage(named: "EyeOpenIcon"), for: .normal)
|
||||||
|
}else{
|
||||||
|
button.setImage(UIImage(named: "EyeCloseIcon"), for: .normal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func enablePasswordToggle(){
|
||||||
|
let button = UIButton(type: .custom)
|
||||||
|
setPasswordToggleImage(button)
|
||||||
|
button.tintColor = UIColor.lightGray
|
||||||
|
button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 15)
|
||||||
|
button.frame = CGRect(x: CGFloat(self.frame.size.width - 25), y: CGFloat(5), width: CGFloat(25), height: CGFloat(25))
|
||||||
|
button.addTarget(self, action: #selector(self.togglePasswordView), for: .touchUpInside)
|
||||||
|
self.rightView = button
|
||||||
|
self.rightViewMode = .always
|
||||||
|
}
|
||||||
|
@IBAction func togglePasswordView(_ sender: Any) {
|
||||||
|
self.isSecureTextEntry = !self.isSecureTextEntry
|
||||||
|
setPasswordToggleImage(sender as! UIButton)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,4 +5,62 @@
|
|||||||
// Created by Bilal on 03/05/2024.
|
// Created by Bilal on 03/05/2024.
|
||||||
//
|
//
|
||||||
|
|
||||||
import Foundation
|
import UIKit
|
||||||
|
|
||||||
|
class ValidatorClass {
|
||||||
|
static let sharedInstanec = ValidatorClass()
|
||||||
|
|
||||||
|
func validateName(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
|
||||||
|
let currentText = textField.text ?? ""
|
||||||
|
|
||||||
|
// dont allow leading space for names
|
||||||
|
if (range.location == 0 && string == " ") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the replacement string is valid (contains only letters and spaces)
|
||||||
|
if !string.nameCharacterOnly(){return false}
|
||||||
|
|
||||||
|
// Ensure that the first and last characters are not spaces
|
||||||
|
if currentText.isEmpty && string == " " {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allow only one space between first name, middle name, and last name
|
||||||
|
if string == " " {
|
||||||
|
let components = currentText.components(separatedBy: " ")
|
||||||
|
|
||||||
|
//Block user from adding 2 spaces in trailing word
|
||||||
|
if components.last == "" && string == " "{
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentText as NSString).replacingCharacters(in: range, with: string).contains(" "){
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let filteredComponents = components.filter { !$0.isEmpty }
|
||||||
|
if filteredComponents.count >= 6 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check the length limit (e.g., adjust to your requirements)
|
||||||
|
let newLength = currentText.count + string.count - range.length
|
||||||
|
return newLength <= 50 // Adjust the limit as needed.
|
||||||
|
}
|
||||||
|
|
||||||
|
func limitCharacter(length : Int, _ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
|
||||||
|
let maxLength = length
|
||||||
|
let currentString = (textField.text ?? "") as NSString
|
||||||
|
let newString = currentString.replacingCharacters(in: range, with: string)
|
||||||
|
return newString.count <= maxLength
|
||||||
|
}
|
||||||
|
|
||||||
|
func limitCharacterTV(length : Int, _ textView: UITextView, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool{
|
||||||
|
let maxLength = length
|
||||||
|
let currentString = (textView.text ?? "") as NSString
|
||||||
|
let newString = currentString.replacingCharacters(in: range, with: string)
|
||||||
|
return newString.count <= maxLength
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17150" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||||
|
<device id="retina6_1" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17122"/>
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
|
||||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
@@ -20,6 +22,7 @@
|
|||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||||
</objects>
|
</objects>
|
||||||
|
<point key="canvasLocation" x="121" y="-27"/>
|
||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ class OnBoardVC: UIViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func loginBtnTapped(_ sender: UIButton) {
|
@IBAction func loginBtnTapped(_ sender: UIButton) {
|
||||||
|
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.loginVC) as! LoginVC
|
||||||
|
self.navigationController?.pushViewController(vc, animated: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -29,36 +29,36 @@ class SplashVC: UIViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@IBAction func languageBtnTapped(_ sender: UIButton) {
|
@IBAction func languageBtnTapped(_ sender: UIButton) {
|
||||||
let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
// let sb = UIStoryboard(name: K.StoryBoard.authenticationSB, bundle: nil)
|
||||||
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.userIntrestVC) as! UserIntrestVC
|
// let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.Authentication.loginVC) as! LoginVC
|
||||||
self.navigationController?.pushViewController(vc, animated: true)
|
// self.navigationController?.pushViewController(vc, animated: true)
|
||||||
// switch sender{
|
switch sender{
|
||||||
// case hindiBtn:
|
case hindiBtn:
|
||||||
// K.GVar.localized = K.LocalizedEnum.hindi
|
K.GVar.localized = K.LocalizedEnum.hindi
|
||||||
// case englishBtn:
|
case englishBtn:
|
||||||
// K.GVar.localized = K.LocalizedEnum.english
|
K.GVar.localized = K.LocalizedEnum.english
|
||||||
// default:
|
default:
|
||||||
// K.GVar.localized = K.LocalizedEnum.english
|
K.GVar.localized = K.LocalizedEnum.english
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
|
let sb = UIStoryboard(name: K.StoryBoard.main, bundle: nil)
|
||||||
// let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.onBoardVC) as! OnBoardVC
|
let vc = sb.instantiateViewController(withIdentifier: K.StoryBoardID.OnBoarding.onBoardVC) as! OnBoardVC
|
||||||
//
|
|
||||||
// // Create a CATransition instance
|
// Create a CATransition instance
|
||||||
// let transition = CATransition()
|
let transition = CATransition()
|
||||||
// transition.duration = 0.3 // Set the duration of the animation
|
transition.duration = 0.3 // Set the duration of the animation
|
||||||
// transition.type = CATransitionType.fade // Set the type of animation to fade
|
transition.type = CATransitionType.fade // Set the type of animation to fade
|
||||||
//
|
|
||||||
// // Optionally, set other properties such as timing function, subtype, etc.
|
// Optionally, set other properties such as timing function, subtype, etc.
|
||||||
// // transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
|
// transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
|
||||||
// // transition.subtype = CATransitionSubtype.fromTop
|
// transition.subtype = CATransitionSubtype.fromTop
|
||||||
//
|
|
||||||
// // Get the navigation controller
|
// Get the navigation controller
|
||||||
// guard let navigationController = navigationController else { return }
|
guard let navigationController = navigationController else { return }
|
||||||
//
|
|
||||||
// // Perform the push animation with the custom transition
|
// Perform the push animation with the custom transition
|
||||||
// navigationController.view.layer.add(transition, forKey: nil)
|
navigationController.view.layer.add(transition, forKey: nil)
|
||||||
// navigationController.pushViewController(vc, animated: false)
|
navigationController.pushViewController(vc, animated: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func animateImageScale() {
|
func animateImageScale() {
|
||||||
|
|||||||
Reference in New Issue
Block a user