使用Swift在Xcode 9中不显示IBDesignable UI
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Swift在Xcode 9中不显示IBDesignable UI相关的知识,希望对你有一定的参考价值。
我试图使用我的自定义xib文件。但是那些UI没有在xcode中的主视图控制器中显示。但它显示运行应用程序时。我已经在课堂上添加了@IBDesignable。这就是我做的。
- 我创建了TestView.xib并添加了一些设计
- 我创建了TextView.swift
- 我在自定义类中使用TextView更新了UITextView.xib的文件所有者
- 我向testView.swift添加了init代码
TextView.swift中的代码
import UIKit
@IBDesignable class DetailView: UIView {
override init(frame: CGRect){
super.init(frame: frame)
self.setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.setup()
}
func setup() {
let view = Bundle.main.loadNibNamed("TestView", owner: self, options: nil)?.first as! UIView
view.frame = self.bounds
self.addSubview(view)
}
}
- 并在MainViewController中的UIView上添加,并使用自定义类名链接到TestView。
- 之后我运行应用程序,我可以从testView中看到UI。 Image of emulator and result
- 但我的自定义UI不会在xcode Image of xcode view controller中的MainViewController中显示
如何在MainViewController中启用自定义UI?谢谢
答案
在Interface Builder中,选择您的UIViewController并选择“Editor - > Refresh all Views”。然后你的自定义视图应该出现。
如果出现问题,您可以通过在代码中设置断点来调试IBDesignable类,然后选择“编辑器 - >调试所选视图”。
如果在Interface Builder中需要特殊的设计外观,则只需要实现qazxsw poi。
有时需要清理项目并构建文件夹以使其工作: 项目 - >清除 项目 - >(按住选项键) - >清理构建文件夹
另一答案
我刚刚更改了设置功能。它现在正在运作。 prepareForInterfaceBuilder()
Final Result Image - It showing UI in IB
另一答案
覆盖以下两个func for live:
func setup() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = UIViewAutoresizing(rawValue: UIViewAutoresizing.RawValue(UInt8(UIViewAutoresizing.flexibleWidth.rawValue) | UInt8(UIViewAutoresizing.flexibleHeight.rawValue)))
self.addSubview(view)
}
func loadViewFromNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "TestView", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
return view
}
以上是关于使用Swift在Xcode 9中不显示IBDesignable UI的主要内容,如果未能解决你的问题,请参考以下文章
Swift 开发的代码在 Xcode 8.x 或 Xcode 7.x 中不起作用
触摸手势在 Scrollview(Xcode、Swift)中不起作用