8

layoutSubviews我调用setImage()并传递它时UIImage,它从未出现在 Interface Builder 中,但它总是在我运行程序时出现。

4

2 回答 2

15

可能您正在使用此方法加载 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];
}
于 2014-11-28T06:52:35.013 回答
5

将为像我一样遇到此问题的任何人提供快速答案。

问题是 Interface Builder 中的图像路径与您的应用程序中的路径不同。

 let bundle = Bundle(for: self.classForCoder)
 image = UIImage(named: "your_image.png", in: bundle, compatibleWith: self.traitCollection)!
 self.setImage(image, for: .normal) 
于 2017-07-04T00:00:33.310 回答