5

我想自定义一个 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)
}

结果: 在此处输入图像描述

4

1 回答 1

1

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

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

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

于 2015-05-14T14:44:05.260 回答