我能否达到以下目标:
view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"imageName.png"]];
仅使用IB?无需编写这样的代码行? 似乎IB只允许设置纯色,而不是图像作为背景。
答案 0 :(得分:6)
Interface Builder不允许使用背景图案。但是,您可以在UIImageView中使用适当的图像覆盖背景。这将为应用程序提供所需的外观,而无需使用您在上面发布的代码。
但是,我强烈反对您应该只使用Interface Builder。代码在我眼中更清晰,并且可以更好地控制你构建的内容。
答案 1 :(得分:2)
这不能在IB中完成,但是正确的代码。尽管其他人评论过,但尽可能使用IB,这样您就可以将精力集中在应用程序的真实业务逻辑上,只能在IB无法到达的地方进一步定制。祝你好运!
答案 2 :(得分:0)
正如其他人所说,你不能仅仅在IB /故事板中这样做。但是使用@IBDesignable,可以 在您的子类中添加几行并在IB中显示 ,这非常酷。
import UIKit
@IBDesignable
class MyView: UIView {
override func awakeFromNib() {
super.awakeFromNib()
self.addPattern()
}
override func prepareForInterfaceBuilder() {
self.addPattern()
}
private func addPattern() {
let image = UIImage(named: "MyPattern", in: Bundle(for: self.dynamicType), compatibleWith: nil)
self.backgroundColor = UIColor(patternImage: image!)
}
}
然后只需将故事板/ IB视图的类更改为MyView。