Tom*_*min 5 xib ios autolayout ios8 size-classes
我正在使用Autolayout和Size Classes从xib加载视图.在该视图中,有一个子视图,viewWithSizeClasses其高度受约束,取决于大小等级.
我想要做的是立即加载约束loadNibNamed,以便根据当前的Size Class获得适当的高度.
我尝试了各种组合layoutSubviews(),updateConstraints()但无论我做什么,我总是得到默认的Any,Any height.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let xibView = NSBundle.mainBundle().loadNibNamed("View", owner: self, options: nil).first as View
self.view.addSubview(xibView)
height = xibView.viewWithSizeClasses.frame.size.height // <- Any, Any height
}
Run Code Online (Sandbox Code Playgroud)
我正在iOS8或更新版本上部署.
我在尝试对 iPhone 和 iPad 使用具有不同约束的相同 xib 时遇到了同样的麻烦。我的解决方案是为同一 xib 中的每个尺寸类别创建一个视图。然后在加载 xib 时,通过索引访问正确的视图。就我而言,我的 Any-Any 尺寸类别位于索引 0 处,Regular-Regular 位于索引 1 处。
NSArray *views = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class) owner:self options:nil];
UIView *view = views[IS_IPAD];
Run Code Online (Sandbox Code Playgroud)
我相信你可以将其翻译为 Swift。我还定义了一个全局宏
#define IS_IPAD (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
360 次 |
| 最近记录: |