辅助视图是否可以在故​​事板中自动调整大小,以及"查看为"变更?

时间:2017-04-25 20:12:10

标签: ios xcode storyboard

我有一个带有辅助视图的视图控制器,在查看为iPhone 7时在故事板中看起来像这样

enter image description here

但是,如果我切换到iPhone SE视图,它看起来像这样: enter image description here

是否有可能以与视图控制器相同的方式在故事板中自动调整大小?

2 个答案:

答案 0 :(得分:0)

嗯......首先你想要完成什么?我从未以这种方式向视图控制器添加视图。基于该UIView的标题,您似乎正在尝试使用自定义视图处理错误。这是一个(并不像它需要的那样深入)快速预览"使用视觉格式的约束" / 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

xib01

  

自定义组件2

xib02

我现在可以在任何View Controller中使用Interface Builder中的那些视图作为任何其他视图:

IB

最后(现在回答您的问题),我们可以使用设备配置窗格直播预览不同设备上的样子:

  

4S预览

preview4s

  

7+预览

preview7+

相关问题