Skip to content
This repository was archived by the owner on Feb 5, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
6929212
Set storyboard ID
mindgraffiti Apr 1, 2020
98add15
Remove .showSigninV2 segue from Login Prologue VC
mindgraffiti Apr 1, 2020
02d4448
Remove `.showSigninV2` from LoginEmailVC and use nav controller
mindgraffiti Apr 1, 2020
a1203c5
Remove segue identifier case `showsigninV2`
mindgraffiti Apr 1, 2020
58fc5c2
Bump podspec
mindgraffiti Apr 1, 2020
31aa14d
Merge pull request #230 from wordpress-mobile/merge-release-1.12-into…
loremattei Apr 6, 2020
ee88f4c
Merge branch 'develop' into issue/229-remove-showSigninV2
mindgraffiti Apr 6, 2020
7f4277b
Bump podspec
mindgraffiti Apr 6, 2020
56e6f1a
Update documentation to explain that Google Sign In conforms to 2fa
mindgraffiti Apr 6, 2020
d6c60b2
Remove unused prepare for segue override function
mindgraffiti Apr 6, 2020
25c026d
Merge pull request #235 from wordpress-mobile/master
mindgraffiti Apr 6, 2020
9fc5c49
Merge branch 'develop' into issue/229-remove-showSigninV2
mindgraffiti Apr 9, 2020
474bb4d
Restore changes after merging from develop
mindgraffiti Apr 9, 2020
6359fdf
Merge pull request #232 from wordpress-mobile/issue/229-remove-showSi…
mindgraffiti Apr 9, 2020
a232c3c
Switch the primary login prologue button to Sign Up
frosty Apr 14, 2020
f37763a
Bump podspec version
frosty Apr 14, 2020
b8cadb1
Navigate using navController instead of segue
mindgraffiti Apr 14, 2020
ed543cb
Update the Xcode tools version. Remove storyboard ID from self-hosted vc
mindgraffiti Apr 14, 2020
a92dead
Delete the segue in IB from LoginEmailVC
mindgraffiti Apr 14, 2020
e26ccf9
Weird indentation
mindgraffiti Apr 14, 2020
116b941
Use navController to navigate to self-hosted VC instead of segue
mindgraffiti Apr 14, 2020
3e29351
Delete segue from LoginSelfHostedVC in Interface Builder
mindgraffiti Apr 14, 2020
0c07107
Delete `showURLUsernamePassword` case from SegueIdentifier enum
mindgraffiti Apr 14, 2020
ce0cd4a
Add class name as storyboardID
mindgraffiti Apr 14, 2020
9a1cdfc
Update podspec version
mindgraffiti Apr 14, 2020
505909b
Updated Podfile.lock
frosty Apr 14, 2020
fc0f91c
Merge pull request #238 from wordpress-mobile/try/switch-primary-button
frosty Apr 14, 2020
2840083
Merge branch 'develop' into issue/239-remove-showURLUsernamePassword
mindgraffiti Apr 15, 2020
541ce42
Merge pull request #240 from wordpress-mobile/issue/239-remove-showUR…
mindgraffiti Apr 15, 2020
16b7da5
Remove performSegue from LoginVC
mindgraffiti Apr 15, 2020
f5cdcc9
Rename storyboardID from siteAddress to class name
mindgraffiti Apr 15, 2020
35ed14e
Remove showSelfHostedLogin segue from LoginPrologueVC
mindgraffiti Apr 15, 2020
b857aa7
Remove showSelfHostedLogin segue from LoginEmailVC
mindgraffiti Apr 15, 2020
a2de49f
Remove the showSelfHostedLogin case from SegueIdentifier enum
mindgraffiti Apr 15, 2020
cec5a83
Missed a piece - updated segue references in Login.storyboard
mindgraffiti Apr 15, 2020
76b7c67
Bump podspec version
mindgraffiti Apr 15, 2020
7cf66f0
Replace creating controller from storyboardID to using new convenienc…
mindgraffiti Apr 16, 2020
49ad985
Merge pull request #242 from wordpress-mobile/issue/241-remove-showSe…
mindgraffiti Apr 16, 2020
23807e0
Updating wpkit to beta pod.
ScoutHarris Apr 16, 2020
f597659
Updating wpkit pod version.
ScoutHarris Apr 16, 2020
bc136f6
Updating WPKit to beta version.
ScoutHarris Apr 17, 2020
6906828
Merge pull request #243 from wordpress-mobile/issue/update_wpkit_version
ScoutHarris Apr 17, 2020
9e873b6
Bump version to 1.13.0
loremattei Apr 20, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def wordpress_authenticator_pods
##
pod 'Gridicons', '~> 1.0'
pod 'WordPressUI', '~> 1.5.2'
pod 'WordPressKit', '~> 4.7.0'
pod 'WordPressKit', '~> 4.8.0'
# pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :branch => ''
# pod 'WordPressKit', :git => 'https://github.com/wordpress-mobile/WordPressKit-iOS.git', :commit => ''
pod 'WordPressShared', '~> 1.8.16'
Expand Down
8 changes: 4 additions & 4 deletions Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ PODS:
- Specta (1.0.7)
- SVProgressHUD (2.2.5)
- UIDeviceIdentifier (1.4.0)
- WordPressKit (4.7.0):
- WordPressKit (4.8.0):
- Alamofire (~> 4.8.0)
- CocoaLumberjack (~> 3.4)
- NSObject-SafeExpectations (= 0.0.4)
Expand All @@ -71,7 +71,7 @@ DEPENDENCIES:
- OHHTTPStubs/Swift (= 8.0.0)
- Specta (= 1.0.7)
- SVProgressHUD (= 2.2.5)
- WordPressKit (~> 4.7.0)
- WordPressKit (~> 4.8.0)
- WordPressShared (~> 1.8.16)
- WordPressUI (~> 1.5.2)

Expand Down Expand Up @@ -117,11 +117,11 @@ SPEC CHECKSUMS:
Specta: 3e1bd89c3517421982dc4d1c992503e48bd5fe66
SVProgressHUD: 1428aafac632c1f86f62aa4243ec12008d7a51d6
UIDeviceIdentifier: 44f805037d21b94394821828f4fcaba34b38c2d0
WordPressKit: 0602e8188245b3267269570d3d78c138e64a4eba
WordPressKit: 84045e236949248632a2c644149e5657733011bb
WordPressShared: 1bc316ed162f42af4e0fa2869437e9e28b532b01
WordPressUI: 70cc58a253c352330b23cd8fa6dd6a2021570e18
wpxmlrpc: 6a9bdd6ab9d1b159b384b0df0f3f39de9af4fecf

PODFILE CHECKSUM: d2a5f1cb57eeb9eb2ac2cb22d29b6b827ccf8ce4
PODFILE CHECKSUM: 8e0158473c1f3e6910b3b417c2f53fee11dc0bfc

COCOAPODS: 1.8.4
4 changes: 2 additions & 2 deletions WordPressAuthenticator.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "WordPressAuthenticator"
s.version = "1.12.1"
s.version = "1.13.0"
s.summary = "WordPressAuthenticator implements an easy and elegant way to authenticate your WordPress Apps."

s.description = <<-DESC
Expand Down Expand Up @@ -40,6 +40,6 @@ Pod::Spec.new do |s|
s.dependency 'Gridicons', '~> 1.0'
s.dependency 'GoogleSignIn', '~> 4.4'
s.dependency 'WordPressUI', '~> 1.5.2'
s.dependency 'WordPressKit', '~> 4.7.0'
s.dependency 'WordPressKit', '~> 4.8.0'
s.dependency 'WordPressShared', '~> 1.8.16'
end
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,7 @@ import AuthenticationServices
/// Returns an instance of LoginSiteAddressViewController: allows the user to log into a WordPress.org website.
///
@objc public class func signinForWPOrg() -> UIViewController {
let storyboard = UIStoryboard(name: "Login", bundle: bundle)
guard let controller = storyboard.instantiateViewController(withIdentifier: "siteAddress") as? LoginSiteAddressViewController else {
guard let controller = LoginSiteAddressViewController.instantiate(from: .login) else {
fatalError("unable to create wpcom password screen")
}

Expand Down
3 changes: 0 additions & 3 deletions WordPressAuthenticator/NUX/NUXViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,7 @@ open class NUXViewController: UIViewController, NUXViewControllerBase, UIViewCon
// MARK: associated type for NUXSegueHandler
/// Segue identifiers to avoid using strings
public enum SegueIdentifier: String {
case showSigninV2
case showURLUsernamePassword
case showWPUsernamePassword
case showSelfHostedLogin
case showWPComLogin
case startMagicLinkFlow
case showMagicLink
Expand Down
35 changes: 9 additions & 26 deletions WordPressAuthenticator/Signin/Login.storyboard
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15705" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Ck1-vY-O11">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Ck1-vY-O11">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15706"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
Expand Down Expand Up @@ -108,9 +108,7 @@
</view>
<navigationItem key="navigationItem" id="42E-2e-kOq"/>
<connections>
<segue destination="T5n-nb-cOW" kind="show" identifier="showSigninV2" id="nCA-u7-fKm"/>
<segue destination="hed-vB-osh" kind="presentation" identifier="showLoginMethod" id="N3P-wt-Rn3"/>
<segue destination="anK-hg-K4j" kind="show" identifier="showSelfHostedLogin" id="Njv-lY-Lyi"/>
<segue destination="lmD-c6-SLs" kind="show" identifier="showWPComLogin" id="UV4-XI-c0q"/>
</connections>
</viewController>
Expand Down Expand Up @@ -350,28 +348,17 @@
<outlet property="submitButton" destination="OZC-xf-OAn" id="k1c-SJ-qiK"/>
<segue destination="Kvo-Y2-yhG" kind="show" identifier="startMagicLinkFlow" id="db9-5R-Qq7"/>
<segue destination="lmD-c6-SLs" kind="show" identifier="showWPComLogin" id="ySQ-EM-6JI"/>
<segue destination="anK-hg-K4j" kind="show" identifier="showSelfHostedLogin" id="bK1-J1-hfT"/>
<segue destination="klu-4U-PyL" kind="show" identifier="showSignupEmail" id="dh4-9P-l8W"/>
<segue destination="T5n-nb-cOW" kind="show" identifier="showSigninV2" id="sIC-Hv-FJw"/>
<segue destination="SZS-o3-1P7" kind="show" identifier="showURLUsernamePassword" id="4SK-mG-U33"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="wWl-qb-1Yp" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1674" y="188"/>
</scene>
<!--SignupEmailViewController-->
<scene sceneID="CQL-qu-sjW">
<objects>
<viewControllerPlaceholder storyboardName="Signup" referencedIdentifier="SignupEmailViewController" id="T5n-nb-cOW" sceneMemberID="viewController"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="UdV-y0-6AN" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-530" y="760"/>
</scene>
<!--Login Self Hosted View Controller-->
<scene sceneID="b2O-iW-wfB">
<objects>
<viewController storyboardIdentifier="selfHosted" useStoryboardIdentifierAsRestorationIdentifier="YES" id="SZS-o3-1P7" customClass="LoginSelfHostedViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<viewController storyboardIdentifier="LoginSelfHostedViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="SZS-o3-1P7" customClass="LoginSelfHostedViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Yjk-Cc-Bxb"/>
<viewControllerLayoutGuide type="bottom" id="Ktl-It-Kmo"/>
Expand Down Expand Up @@ -1013,7 +1000,7 @@
<!--Login Site Address View Controller-->
<scene sceneID="idG-jg-gxH">
<objects>
<viewController storyboardIdentifier="siteAddress" extendedLayoutIncludesOpaqueBars="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="anK-hg-K4j" customClass="LoginSiteAddressViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<viewController storyboardIdentifier="LoginSiteAddressViewController" extendedLayoutIncludesOpaqueBars="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="anK-hg-K4j" customClass="LoginSiteAddressViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="pmp-Uj-4NW"/>
<viewControllerLayoutGuide type="bottom" id="rYV-q2-blN"/>
Expand Down Expand Up @@ -1155,7 +1142,6 @@
<outlet property="siteAddressHelpButton" destination="roL-ID-k8n" id="QB2-ri-X5V"/>
<outlet property="siteURLField" destination="ZrT-CY-qD7" id="561-Zw-Ja9"/>
<outlet property="submitButton" destination="ltO-hW-mbe" id="wwr-D5-5kK"/>
<segue destination="SZS-o3-1P7" kind="show" identifier="showURLUsernamePassword" id="TkG-0R-c3i"/>
<segue destination="iMi-vX-AxR" kind="show" identifier="showWPUsernamePassword" id="dtm-iK-PLb"/>
<segue destination="hed-vB-osh" kind="presentation" identifier="showLoginMethod" id="5hL-j3-eMs"/>
<segue destination="lmD-c6-SLs" kind="show" identifier="showWPComLogin" id="8p6-rS-9Ml"/>
Expand Down Expand Up @@ -1435,17 +1421,14 @@
<point key="canvasLocation" x="-460" y="1248"/>
</scene>
</scenes>
<resources>
<image name="icon-password-field" width="18" height="22"/>
<image name="icon-url-field" width="18" height="22"/>
<image name="icon-username-field" width="18" height="18"/>
</resources>
<inferredMetricsTieBreakers>
<segue reference="N3P-wt-Rn3"/>
<segue reference="Njv-lY-Lyi"/>
<segue reference="UV4-XI-c0q"/>
<segue reference="4SK-mG-U33"/>
<segue reference="sIC-Hv-FJw"/>
<segue reference="iD4-VS-n3M"/>
</inferredMetricsTieBreakers>
<resources>
<image name="icon-password-field" width="18" height="22"/>
<image name="icon-url-field" width="18" height="22"/>
<image name="icon-username-field" width="18" height="18"/>
</resources>
</document>
56 changes: 28 additions & 28 deletions WordPressAuthenticator/Signin/LoginEmailViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,14 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {

// Don't forget to handle the button taps!
vc.emailTapped = { [weak self] in
self?.performSegue(withIdentifier: .showSigninV2, sender: self)
guard let toVC = SignupEmailViewController.instantiate(from: .signup) else {
DDLogError("Failed to navigate from LoginEmailViewController to SignupEmailViewController")
return
}

self?.navigationController?.pushViewController(toVC, animated: true)
}

vc.googleTapped = { [weak self] in
guard let toVC = SignupGoogleViewController.instantiate(from: .signup) else {
DDLogError("Failed to navigate to SignupGoogleViewController")
Expand All @@ -215,6 +221,7 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {

self?.navigationController?.pushViewController(toVC, animated: true)
}

vc.appleTapped = { [weak self] in
self?.appleTapped()
}
Expand Down Expand Up @@ -396,13 +403,24 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {
}

/// Configures loginFields to log into wordpress.com and
/// navigates to the selfhosted username/password form. Displays the specified
/// error message when the new view controller appears.
/// navigates to the selfhosted username/password form.
/// Displays the specified error message when the new
/// view controller appears.
///
@objc func showSelfHostedUsernamePasswordAndError(_ error: Error) {
loginFields.siteAddress = "https://wordpress.com"
errorToPresent = error
performSegue(withIdentifier: .showURLUsernamePassword, sender: self)

guard let vc = LoginSelfHostedViewController.instantiate(from: .login) else {
DDLogError("Failed to navigate from LoginEmailViewController to LoginSelfHostedViewController")
return
}

vc.loginFields = loginFields
vc.dismissBlock = dismissBlock
vc.errorToPresent = errorToPresent

navigationController?.pushViewController(vc, animated: true)
}

override open func displayRemoteError(_ error: Error) {
Expand All @@ -417,29 +435,6 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {
return EmailFormatValidator.validate(string: loginFields.username)
}


// MARK: - Segue

override open func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)

if let vc = segue.destination as? LoginPrologueSignupMethodViewController {
vc.transitioningDelegate = self
vc.emailTapped = { [weak self] in
self?.performSegue(withIdentifier: .showSigninV2, sender: self)
}
vc.googleTapped = { [weak self] in
guard let toVC = SignupGoogleViewController.instantiate(from: .signup) else {
DDLogError("Failed to navigate to SignupGoogleViewController")
return
}

self?.navigationController?.pushViewController(toVC, animated: true)
}
vc.modalPresentationStyle = .custom
}
}

// MARK: - Actions


Expand Down Expand Up @@ -536,7 +531,9 @@ open class LoginEmailViewController: LoginViewController, NUXKeyboardResponder {

// MARK: - Google Sign In

// LoginFacadeDelegate methods for Google Google Sign In
/// Make Google Sign In conform to the LoginFacade protocol.
/// The delegate calls these methods from LoginFacade.m.
///
extension LoginEmailViewController {
func finishedLogin(withGoogleIDToken googleIDToken: String, authToken: String) {
googleFinishedLogin(withGoogleIDToken: googleIDToken, authToken: authToken)
Expand All @@ -547,6 +544,9 @@ extension LoginEmailViewController {
googleExistingUserNeedsConnection(email)
}

/// After a successful Google Sign In, this method gets called when the user
/// has enabled 2-factor authentication for their WordPress.com account.
///
func needsMultifactorCode(forUserID userID: Int, andNonceInfo nonceInfo: SocialLogin2FANonceInfo) {
configureViewLoading(false)
socialNeedsMultifactorCode(forUserID: userID, andNonceInfo: nonceInfo)
Expand Down
11 changes: 8 additions & 3 deletions WordPressAuthenticator/Signin/LoginPrologueViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,10 @@ class LoginPrologueViewController: LoginViewController {
let loginTitle = NSLocalizedString("Log In", comment: "Button title. Tapping takes the user to the login form.")
let createTitle = NSLocalizedString("Sign up for WordPress.com", comment: "Button title. Tapping begins the process of creating a WordPress.com account.")

buttonViewController.setupTopButton(title: loginTitle, isPrimary: true, accessibilityIdentifier: "Prologue Log In Button") { [weak self] in
buttonViewController.setupTopButton(title: loginTitle, isPrimary: false, accessibilityIdentifier: "Prologue Log In Button") { [weak self] in
self?.loginTapped()
}
buttonViewController.setupBottomButton(title: createTitle, isPrimary: false, accessibilityIdentifier: "Prologue Signup Button") { [weak self] in
buttonViewController.setupBottomButton(title: createTitle, isPrimary: true, accessibilityIdentifier: "Prologue Signup Button") { [weak self] in
self?.signupTapped()
}
if showCancel {
Expand Down Expand Up @@ -124,7 +124,12 @@ class LoginPrologueViewController: LoginViewController {
vc.modalPresentationStyle = .custom

vc.emailTapped = { [weak self] in
self?.performSegue(withIdentifier: .showSigninV2, sender: self)
guard let toVC = SignupEmailViewController.instantiate(from: .signup) else {
DDLogError("Failed to navigate to SignupEmailViewController")
return
}

self?.navigationController?.pushViewController(toVC, animated: true)
}

vc.googleTapped = { [weak self] in
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,16 @@ class LoginSiteAddressViewController: LoginViewController, NUXKeyboardResponder
///
@objc func showSelfHostedUsernamePassword() {
configureViewLoading(false)
performSegue(withIdentifier: .showURLUsernamePassword, sender: self)
guard let vc = LoginSelfHostedViewController.instantiate(from: .login) else {
DDLogError("Failed to navigate from LoginEmailViewController to LoginSelfHostedViewController")
return
}

vc.loginFields = loginFields
vc.dismissBlock = dismissBlock
vc.errorToPresent = errorToPresent

navigationController?.pushViewController(vc, animated: true)
}

/// Break away from the self-hosted flow.
Expand Down
12 changes: 11 additions & 1 deletion WordPressAuthenticator/Signin/LoginViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,18 @@ open class LoginViewController: NUXViewController, LoginFacadeDelegate {
}

/// Displays the self-hosted sign in form.
///
func loginToSelfHostedSite() {
performSegue(withIdentifier: .showSelfHostedLogin, sender: self)
guard let vc = LoginSiteAddressViewController.instantiate(from: .login) else {
DDLogError("Failed to navigate from LoginViewController to LoginSiteAddressViewController")
return
}

vc.loginFields = loginFields
vc.dismissBlock = dismissBlock
vc.errorToPresent = errorToPresent

navigationController?.pushViewController(vc, animated: true)
}

/// Validates what is entered in the various form fields and, if valid,
Expand Down
2 changes: 1 addition & 1 deletion WordPressAuthenticator/Signup/Signup.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<!--Signup Email View Controller-->
<scene sceneID="b2m-u4-I3H">
<objects>
<viewController storyboardIdentifier="SignupEmailViewController" id="Opx-rl-H3d" customClass="SignupEmailViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<viewController storyboardIdentifier="SignupEmailViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="Opx-rl-H3d" customClass="SignupEmailViewController" customModule="WordPressAuthenticator" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="F3A-pe-bcZ">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
Expand Down