使用 Swift 3 Xcode 8 加载时缺少自定义 XIB
Posted
技术标签:
【中文标题】使用 Swift 3 Xcode 8 加载时缺少自定义 XIB【英文标题】:Custom XIB missing when loading with Swift 3 Xcode 8 【发布时间】:2016-09-20 23:57:02 【问题描述】:我正在使用带有自定义 XIB 的情节提要,在升级到 swift 2 和 xcode 7 之前一切正常。升级后可以将情节提要转换为 xcode 8。我的视图控制器显示视图,但缺少我的自定义 XIB .查看情节提要文件,使用自定义 XIB 转换情节提要似乎存在错误。其他人有这个问题吗?
required public init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)!
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: self.dynamicTypeName, bundle: bundle)
let nibView = nib.instantiate(withOwner: self, options: nil).first as! UIView
self.mainView = nibView
self.mainView.frame = bounds
self.mainView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
mainView.translatesAutoresizingMaskIntoConstraints = true
self.addSubview(mainView)
【问题讨论】:
【参考方案1】:swift 3 的布局过程出了点问题,因为在升级之前
调用 self.mainView.frame = bounds,会给你正确的边界,但现在使用 swift 3 它总是(0、0、1000、1000),所以我必须在 layoutSubviews 中设置框架以获得正确的边界.
open override func layoutSubviews()
self.mainView.frame = bounds
【讨论】:
我也遇到了同样的问题,你找到解决办法了吗。 是的,尝试在 layoutSubviews 中设置您的自定义 xib 框架 不知道为什么它没有自动取帧,尽管提供的房间仍然是全屏的(比如 mainscreen.rect)以上是关于使用 Swift 3 Xcode 8 加载时缺少自定义 XIB的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 swift 3 xcode 8 在核心数据中预加载数据库
自定义幻灯片 Segue - Xcode 8.0 Swift 3.0
Xcode8/Swift 3 更新后缺少 Firebase 标头警告