无法更改从nib文件加载的视图中按钮的属性

时间:2017-05-24 11:32:50

标签: ios uiimageview uibutton xib nib

我正在加载一个我在界面构建器中创建的视图,如下所示:

let contentView = Bundle.main.loadNibnamed("ContentView", owner: nil, options: nil)?.first as! ContentView

视图包含UIImageView和UIButton。它们都与IBOutlets连接到ContentView类文件。

现在当我加载视图时,我正在设置UIImageView的图像,它工作正常。我也试图改变UIButton的文本和backgroundColor,但两者都不会改变。有趣的是,按钮不会保留我在界面构建器中设置的颜色,而是文本。

我用来更改文字和颜色的代码:

contentView.contentButton.backgroundColor = .red
contentView.contentButton.titleLabel?.text = "someText"

感谢您的帮助。

ContentView.swift
class ContentView: UIView {
   @IBOutlet weak var mainImageView: UIImageView!
   @IBOutlet weak var contentImageView: UIImageView!
   @IBOutlet weak var contentButton: UIButton! 
}

我用来创建视图的代码:

ContentScrollViewController.swift
override func viewDidLoad() {
    super.viewDidLoad()

    for i in 0..<imageArray.count {
        let xPosition = Int(self.view.frame.width) * i

        let contentView: ContentView = Bundle.main.loadNibNamed("ContentView", owner: nil, options: nil)?.first as! ContentView

        contentView.frame.origin = CGPoint(x: xPosition, y: -Int((self.navigationController?.navigationBar.frame.height)!))

        contentView.mainImageView.contentMode = .scaleAspectFill
        contentView.contentImageView.image = #imageLiteral(resourceName: "stoerer_png_neu")

        //Not working 
        contentView.specialButton.backgroundColor = .red

        if let url = URL(string: imageArray[i]) {
            contentView.mainImageView.af_setImage(withURL: url)
        }

        mainScrollView.contentSize.width = mainScrollView.frame.width * CGFloat(i + 1)

        mainScrollView.addSubview(contentView)
    }

}

2 个答案:

答案 0 :(得分:0)

你必须使用

contentView.contentButton.setTitle("someText", for: .normal)

contentView.contentButton.setTitleColor(.red, for: .normal)

因为您需要为特定的UIControlState

设置这些属性

对于背景,您需要使用图层:

contentView.contentButton.layer.backgroundColor = UIColor.red.cgColor

答案 1 :(得分:-1)

重新启动与问题相关的所有文件后,我终于找到了问题。某种程度上,.xib中UIButton的约束是造成这个问题的原因。因此,如果您遇到相同的情况,请检查您的约束。 :