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

Dou*_*ith 7 xcode uiview ios ios8 ibdesignable

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

Les*_*ary 14

可能你用这种方法加载你的UIImage:

UIImage *image = [UIImage imageNamed:@"image"];
Run Code Online (Sandbox Code Playgroud)

这在界面构建器中不起作用,因为imageNamed:方法使用主捆绑但IB以不同方式加载资源.尝试这样的事情:

- (void)prepareForInterfaceBuilder
{
    UIImage *image = [UIImage imageNamed:@"image" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
    [self setImage:image forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)


小智 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) 
Run Code Online (Sandbox Code Playgroud)