Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 二级视图是否可以在情节提要中自动调整大小,如;视为;变化?_Ios_Xcode_Storyboard - Fatal编程技术网

Ios 二级视图是否可以在情节提要中自动调整大小,如;视为;变化?

Ios 二级视图是否可以在情节提要中自动调整大小,如;视为;变化?,ios,xcode,storyboard,Ios,Xcode,Storyboard,我有一个带有二级视图的视图控制器,当作为iPhone7观看时,它在情节提要中是这样的 但如果我切换到iPhone SE,它看起来是这样的: 有没有可能让它在情节提要中自动调整大小,就像视图控制器那样?嗯。。。首先,你想完成什么?我从未以这种方式向视图控制器添加视图。根据该UIView的标题,您似乎正在尝试使用自定义视图来处理错误。下面是代码中“具有可视格式的约束”/NSLayoutConstraint”的快速预览 创建一个名为MyCustomView(或其他)的类,并将其从UIView继承。

我有一个带有二级视图的视图控制器,当作为iPhone7观看时,它在情节提要中是这样的

但如果我切换到iPhone SE,它看起来是这样的:


有没有可能让它在情节提要中自动调整大小,就像视图控制器那样?

嗯。。。首先,你想完成什么?我从未以这种方式向视图控制器添加视图。根据该UIView的标题,您似乎正在尝试使用自定义视图来处理错误。下面是代码中“具有可视格式的约束”/
NSLayoutConstraint
”的快速预览

创建一个名为
MyCustomView
(或其他)的类,并将其从UIView继承。然后在UIViewController中,您可以在需要使用视觉格式约束时添加它

1) 在需要显示时初始化并配置
MyCustomView
(此代码位于视图控制器中的某个位置):

2) 这就是自定义类中的
constrainToSuperView
的外观:

private func constrainToSuperView() {

    self.translatesAutoresizingMaskIntoConstraints = false

    var constraints = [NSLayoutConstraint]()

    let vertical = NSLayoutConstraint.constraints(withVisualFormat: "V:|[self]|", options: [], metrics: nil, views: ["self": self])

    constraints.append(contentsOf: vertical)

    let horizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|[self]|", options: [], metrics: nil, views: ["self": self])

    constraints.append(contentsOf: horizontal)

    self.superview.addConstraints(constraints)

}
在代码中管理约束有一个基调需要学习,但这是一个值得尝试的技巧。它可以帮助您创建自定义视图,并使故事板更整洁

注1:我在
MyCustomView
类中添加了零内容。它现在将显示一个空白视图。您有两个添加内容的选项。首先,您可以继续在代码中编写约束,也可以添加一个.xib文件并在那里创建这个自定义视图的内部结构。第二条路可能就是要走的路

注2:您始终可以在情节提要中添加自定义视图,然后为其约束创建一个出口。然后,您可以设置其约束的动画,以便在需要显示视图时将视图移离屏幕和移到屏幕上


如果你有任何问题,请告诉我。我很乐意扩展我的答案。

目前没有办法做到您所描述的

仅自动调整
ViewControllers
的布局,而不仅仅是
UIViews

如果您想预览您的自定义UI组件在不同设备中的外观,我强烈建议将
UIView
子类化,并使用
@IBDesignable
@IBInspectable
。您还将创建一个
XIB
文件,用于布局“小部件”的设计

通过这种方式,您可以像使用任何其他视图一样在Interface Builder中使用自定义组件,并使用上面的设备配置窗格进行预览

例如:假设我有两个自定义组件,一个是带有开关按钮的简单问题,另一个是用于“锁定/解锁”信用卡的组件。两者都依赖于
XIB
文件和
UIView
子类:

自定义组件1

自定义组件2

现在,我可以将Interface Builder中的视图用作任何视图控制器中的任何其他视图:

最后(现在回答您的问题),我们可以使用设备配置窗格在不同设备上实时预览它的外观:

4S预览

7+预览

private func constrainToSuperView() {

    self.translatesAutoresizingMaskIntoConstraints = false

    var constraints = [NSLayoutConstraint]()

    let vertical = NSLayoutConstraint.constraints(withVisualFormat: "V:|[self]|", options: [], metrics: nil, views: ["self": self])

    constraints.append(contentsOf: vertical)

    let horizontal = NSLayoutConstraint.constraints(withVisualFormat: "H:|[self]|", options: [], metrics: nil, views: ["self": self])

    constraints.append(contentsOf: horizontal)

    self.superview.addConstraints(constraints)

}