使用Swift在Xcode 9中不显示IBDesignable UI

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Swift在Xcode 9中不显示IBDesignable UI相关的知识,希望对你有一定的参考价值。

我试图使用我的自定义xib文件。但是那些UI没有在xcode中的主视图控制器中显示。但它显示运行应用程序时。我已经在课堂上添加了@IBDesignable。这就是我做的。

  1. 我创建了TestView.xib并添加了一些设计
  2. 我创建了TextView.swift
  3. 我在自定义类中使用TextView更新了UITextView.xib的文件所有者
  4. 我向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)
}

}
  1. 并在MainViewController中的UIView上添加,并使用自定义类名链接到TestView。
  2. 之后我运行应用程序,我可以从testView中看到UI。 Image of emulator and result
  3. 但我的自定义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)中不起作用

NSKeyedArchiver 在 Swift 3 (Xcode 8) 中不起作用

“图像文字”命令在 Xcode 中不起作用

拖放在 Xcode 中不起作用

拍照或从库中获取图像的权限未在 iOS 9 中显示(Xcode 7beta,Swift 2)