gpt4 book ai didi

ios - 使用 loadNibNamed 和 Size Classes 获取约束

转载 作者:可可西里 更新时间:2023-11-01 04:57:24 27 4
gpt4 key购买 nike

我正在使用自动布局和大小类从 xib 加载 View 。在该 View 中有一个 subview viewWithSizeClasses,其高度限制取决于大小类。

我想做的是在 loadNibNamed 之后立即加载约束,以便根据当前 Size Class 获得正确的高度。

我尝试了 layoutSubviews()updateConstraints() 的各种组合,但无论我做什么,我总是得到默认的 Any, Any高度。

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
}

我正在 iOS8 或更高版本上部署。

最佳答案

我在尝试对 iPhone 和 iPad 使用具有不同约束的相同 xib 时遇到了同样的麻烦。我的解决方案是在同一个 xib 中为每个尺寸类别创建一个 View 。然后在加载 xib 时,通过索引访问适当的 View 。在我的例子中,我的 Any-Any 尺寸类在索引 0 处,而 Regular-Regular 在索引 1 处。

NSArray *views = [NSBundle.mainBundle loadNibNamed:NSStringFromClass(self.class) owner:self options:nil];
UIView *view = views[IS_IPAD];

我相信您可以将其转换为 Swift。我还定义了一个全局宏

#define IS_IPAD (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)

关于ios - 使用 loadNibNamed 和 Size Classes 获取约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27550282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com