iOS - 自动布局不适用于 3.5" 屏幕
iOS - Autolayout not good for 3.5" screens
我在我的应用程序中添加了自动布局,它非常适合 4"、4.7" 和 5.5" 屏幕。但是,当我在 3.5" (iPhone 4S) 上测试它时,它很乱。许多物体彼此重叠。我能做什么 ?有没有办法在将应用程序上传到 iTunes Connect 时排除 iPhone 4S?如果我的应用程序不适用于 iPhone 4S,它是否会被拒绝,因为它仍然支持 iOS 9? (使用 Xcode 7 GM)
编辑:
我为 3.5 英寸制作了另一个名为 "iPhone35" 的故事板,并将此代码添加到 AppDelegate.swift 中的应用程序功能,但它总是打开 Main.storyboard,它是 4 英寸的及以上屏幕尺寸,即使我选择 iPhone 4S 模拟器。
let theBounds = UIScreen.mainScreen().bounds
let heightDevice = theBounds.size.height
if heightDevice == 480 {
let wantedStoryboard = UIStoryboard(name: "iPhone35", bundle: nil)
let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage")
let rootViewController = self.window!.rootViewController
rootViewController?.presentViewController(vc, animated: false, completion: nil)
} else {
let wantedStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage")
let rootViewController = self.window!.rootViewController
rootViewController?.presentViewController(vc, animated: false, completion: nil)
}
我该怎么办?
所以我所做的就是将此功能添加到 AppDelegate.swift
func grabStoryBoard() -> UIStoryboard {
var storyboard: UIStoryboard
let width = UIScreen.mainScreen().width
if width == 480.0 {
storyboard = UIStoryboard(name: "iPhone35", bundle: nil)
} else {
storyboard = UIStoryboard(name: "Main", bundle: nil)
}
return storyboard
}
然后在 didFinishLaunchingWithOptions 函数中添加这几行
let storyboard: UIStoryboard = self.grabStoryBoard()
self.window!.rootViewController = storyboard.instantiateInitialViewController() as UIViewController?
self.window!.makeKeyAndVisible()
而且我还在我的新故事板的第一个控制器上单击了“是初始视图控制器”。
width == 480.0 的原因是因为我的应用设置为 Landscape only。
我在我的应用程序中添加了自动布局,它非常适合 4"、4.7" 和 5.5" 屏幕。但是,当我在 3.5" (iPhone 4S) 上测试它时,它很乱。许多物体彼此重叠。我能做什么 ?有没有办法在将应用程序上传到 iTunes Connect 时排除 iPhone 4S?如果我的应用程序不适用于 iPhone 4S,它是否会被拒绝,因为它仍然支持 iOS 9? (使用 Xcode 7 GM)
编辑:
我为 3.5 英寸制作了另一个名为 "iPhone35" 的故事板,并将此代码添加到 AppDelegate.swift 中的应用程序功能,但它总是打开 Main.storyboard,它是 4 英寸的及以上屏幕尺寸,即使我选择 iPhone 4S 模拟器。
let theBounds = UIScreen.mainScreen().bounds
let heightDevice = theBounds.size.height
if heightDevice == 480 {
let wantedStoryboard = UIStoryboard(name: "iPhone35", bundle: nil)
let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage")
let rootViewController = self.window!.rootViewController
rootViewController?.presentViewController(vc, animated: false, completion: nil)
} else {
let wantedStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = wantedStoryboard.instantiateViewControllerWithIdentifier("MainPage")
let rootViewController = self.window!.rootViewController
rootViewController?.presentViewController(vc, animated: false, completion: nil)
}
我该怎么办?
所以我所做的就是将此功能添加到 AppDelegate.swift
func grabStoryBoard() -> UIStoryboard {
var storyboard: UIStoryboard
let width = UIScreen.mainScreen().width
if width == 480.0 {
storyboard = UIStoryboard(name: "iPhone35", bundle: nil)
} else {
storyboard = UIStoryboard(name: "Main", bundle: nil)
}
return storyboard
}
然后在 didFinishLaunchingWithOptions 函数中添加这几行
let storyboard: UIStoryboard = self.grabStoryBoard()
self.window!.rootViewController = storyboard.instantiateInitialViewController() as UIViewController?
self.window!.makeKeyAndVisible()
而且我还在我的新故事板的第一个控制器上单击了“是初始视图控制器”。
width == 480.0 的原因是因为我的应用设置为 Landscape only。