快速 IBDesignable 视图未显示在情节提要中

Posted

技术标签:

【中文标题】快速 IBDesignable 视图未显示在情节提要中【英文标题】:swift IBDesignable view not show in storyboard 【发布时间】:2015-01-02 22:28:00 【问题描述】:

我想自定义一个 5 星 UIView,也希望它在故事板中呈现。所以我决定使用@IBDesignable 和@IBInspectable。以下是我的代码。

import UIKit

@IBDesignable
class RatingView: UIView 

    override init(frame: CGRect) 
        super.init(frame: frame)

        setUpView()
    

    required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)

        setUpView()
    

    func setUpView() 

        let imageView = UIImageView(frame:CGRectMake(0, 0, 50,50))
        imageView.image = UIImage(named: "star")

        addSubview(imageView)
    

然后在我的故事板中,我将一个 UIView 拉到我的画布中,并将自定义类设置为我的自定义视图作为 RatingView。编译器开始编译故事板文件,我只是等待自定义视图在画布中呈现。这里是屏幕截图。

状态是“最新的”,但视图尚未渲染。视图只是保持白色,我想看到的是我添加到父视图的图像。 当我使用 UILabel 而不是 UIImageView 时,标签在画布中呈现,而不是 UIImageView,如何在画布中呈现我可爱的星星图像。(Images.xcassets 有 star.png 文件)

使用 UILabel 代替 UIImageView

func setUpView() 

    let label = UILabel(frame: CGRectMake(0, 0, 50, 50))
    label.text = "text"
    addSubview(label)

结果:

【问题讨论】:

尝试在你的setUpView()设置框架,UIView的框架默认是0,0 但是 UILabel 确实有效... 你弄明白了吗?我有同样的问题 - 故事板中只有白色。我将文件所有者和自定义类设置为可设计类。它说是最新的。但什么也没有出现。 我认为问题在于图像资源在设计时不可用,但在运行时,在 WWDC2014 中,有一个名为 What's new in interface builder (session411) 的会话讨论实时渲染可能会有所帮助你解决了这个问题。 【参考方案1】:

我试图做同样的事情。您需要将视图放入框架中。正如@Benson Tommy 在 cmets 中所说,看看 WWDC 2014 session 411。

这里是会话的链接:https://developer.apple.com/videos/wwdc/2014/#411

这里是会议记录的链接:http://asciiwwdc.com/2014/sessions/411

【讨论】:

感谢您的链接。 现在不是这样了。您无需将其放入框架中。

以上是关于快速 IBDesignable 视图未显示在情节提要中的主要内容,如果未能解决你的问题,请参考以下文章

Sse IBInspectable 和 IB_DESIGNABLE 错误更改未显示在情节提要中?

IBDesignable UIViewController

IBDesignable UIViewController

渲染故事板时出现 IBDesignable 错误

@IBDesignable 错误:无法更新自动布局状态

将故事板指南标题设置为 @IBInspectable 值,以便快速自定义 @IBDesignable 视图?