在layoutSubviews
中我正在调用setImage()
并将其传递给UIImage
,但它从未出现在Interface Builder中,但它总是在我运行程序时出现。
答案 0 :(得分:13)
您可能正在使用此方法加载UIImage:
UIImage *image = [UIImage imageNamed:@"image"];
这在界面构建器中不起作用,因为imageNamed:方法使用主捆绑但IB以不同方式加载资源。尝试这样的事情:
- (void)prepareForInterfaceBuilder
{
UIImage *image = [UIImage imageNamed:@"image" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
[self setImage:image forState:UIControlStateNormal];
}
答案 1 :(得分:4)
对于像我一样遇到这个问题的人,给予快速回答。
问题是Interface Builder中的图像路径与应用程序中的路径不同。
let bundle = Bundle(for: self.classForCoder)
image = UIImage(named: "your_image.png", in: bundle, compatibleWith: self.traitCollection)!
self.setImage(image, for: .normal)