我有一个带有辅助视图的视图控制器,在查看为iPhone 7时在故事板中看起来像这样
是否有可能以与视图控制器相同的方式在故事板中自动调整大小?
答案 0 :(得分:0)
NSLayoutConstraint
代码。
创建一个名为MyCustomView
的类(或者什么),让它继承自UIView。然后在您的UIViewController中,您可以在需要使用可视格式的约束时添加它。
1)当您需要呈现时,初始化并配置MyCustomView
(此代码位于视图控制器内部):
let alertView = MyCustomView(frame: CGRect(0,0,200,150))
self.view.addSubview(alertView)
alertView.constrainToSuperView()
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
课程添加了零内容。它现在将呈现一个空白视图。您有两种添加内容的选项。 Fist,您可以继续在代码中编写约束,也可以添加.xib文件并在此处创建此自定义视图的内部。第二种方式可能是要走的路。
注意2:您始终可以在故事板中添加自定义视图,然后为其约束创建插座。然后,您可以设置其约束的动画,以便在您需要呈现视频时将视图移出屏幕和屏幕。
如果您有任何疑问,请与我们联系。我很乐意扩大我的答案。
答案 1 :(得分:0)
目前无法按照您的描述进行操作。
device configuration pane会自动调整ViewControllers
的布局 - 而不仅仅是UIViews
。
如果您想预览自定义UI组件在不同设备中的外观,我强烈建议继承UIView
并使用@IBDesignable
,@IBInspectable
。您还可以创建一个XIB
文件来布局“小部件”的设计。
通过这种方式,您可以像在任何其他视图中一样在Interface Builder中使用自定义组件,并使用上面的设备配置窗格进行预览。
例如:假设我有两个自定义组件,一个是带开关按钮的简单问题,另一个是“锁定/解锁”信用卡的组件。两者都依赖XIB
个文件和UIView
子类:
自定义组件1
自定义组件2
我现在可以在任何View Controller中使用Interface Builder中的那些视图作为任何其他视图:
最后(现在回答您的问题),我们可以使用设备配置窗格直播预览不同设备上的样子:
4S预览
7+预览