为什么我的IBDesignable不允许我在我的自定义UIButton上使用setImage?

时间:2014-10-27 19:22:01

标签: ios xcode uiview ios8 ibdesignable

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

2 个答案:

答案 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)