Ios 如何根据屏幕大小加载特定的故事板

Ios 如何根据屏幕大小加载特定的故事板,ios,xcode,autolayout,uistoryboard,Ios,Xcode,Autolayout,Uistoryboard,我正在尝试开发一款与3.5英寸和4英寸显示器兼容的应用程序。但是,当我尝试使用自动布局时,我无法根据屏幕的大小确定如何调整视图的大小。我能想象的唯一其他方法是设计两个故事板,然后根据手机屏幕的大小加载一个故事板。有人能帮我解决这个问题吗?谢谢你抽出时间 在故事板上查看。可以在不同的设备上使用相同的代码指定相同组件的其他布局 如果确实要使用不同的故事板,请在AppDelegate中的方法application:didfishlaunchingwithoptions:中设置它。在这里,您可以通过 s

我正在尝试开发一款与3.5英寸和4英寸显示器兼容的应用程序。但是,当我尝试使用自动布局时,我无法根据屏幕的大小确定如何调整视图的大小。我能想象的唯一其他方法是设计两个故事板,然后根据手机屏幕的大小加载一个故事板。有人能帮我解决这个问题吗?谢谢你抽出时间

在故事板上查看。可以在不同的设备上使用相同的代码指定相同组件的其他布局

如果确实要使用不同的故事板,请在AppDelegate中的方法
application:didfishlaunchingwithoptions:
中设置它。在这里,您可以通过

self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
并使用

let storyboard = UIStoryboard(name: "Main", bundle: nil)
window!.rootViewController = storyboard.instantiateViewControllerWithIdentifier("InitVC") as UIViewController
window!.makeKeyAndVisible()

此代码将使用脚本
Main
和初始视图控制器
InitVC

来实例化应用程序。AutoLayout无法针对特定型号的iPhone。然而,有一个解决办法。你有两个选择

第一选择 放置一个不可见的
ui视图
,并创建与
Superview
一起附带的顶部、底部、前导和尾随约束。然后将对象(它们可以是
UIImageViews
UILabels
,列表继续)放置在刚才放置的
UIView
中。现在创建将对象连接到
ui视图的顶部和底部约束

我创建了一个演示来向您展示它是如何完成的。正如您将看到的,根据屏幕的大小,按钮有不同的大小。从链接下载演示

第二种选择 您可以通过编程方式创建和修改约束。创建一个
NSLayoutConstraint
,并根据用户的设备调整其
常数

var myConstant: CGFloat = 0

if UIScreen.mainScreen().bounds.size.height == 480 {
        // iPhone 4
    myConstant = 10
    } else if UIScreen.mainScreen().bounds.size.height == 568 {
        // iPhone 5
    myConstant = 20
    } else if UIScreen.mainScreen().bounds.size.width == 375 {
        // iPhone 6
    myConstant = 30
    } else if UIScreen.mainScreen().bounds.size.width == 414 {
        // iPhone 6+
    myConstant = 40
    } else if UIScreen.mainScreen().bounds.size.width == 768 {
        // iPad
    myConstant = 50
    }

var myConstraint = NSLayoutConstraint (item: myButton,
        attribute: NSLayoutAttribute.Top,
        relatedBy: NSLayoutRelation.Equal,
        toItem: self.view,
        attribute: NSLayoutAttribute.Top,
        multiplier: 1,
        constant: myConstant)
    self.view.addConstraint(myConstraint)