In layoutSubviews
Ich rufe setImage()
und übergeben Sie es eine UIImage
, aber es erscheint nie in Interface Builder, aber es zeigt immer, wenn ich das Programm ausführen.Warum erlaubt mir mein IBDesignable nicht, setImage zu verwenden: auf meinem benutzerdefinierten UIButton?
5
A
Antwort
12
Wahrscheinlich mit dieser Methode laden Sie Ihre UIImage:
UIImage *image = [UIImage imageNamed:@"image"];
Dies, weil imagenamed nicht in Interface Builder arbeiten: Methode Hauptbündel aber IB Lasten Ressourcen auf unterschiedliche Weise verwendet. Probieren Sie etwas wie folgt aus:
- (void)prepareForInterfaceBuilder
{
UIImage *image = [UIImage imageNamed:@"image" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
[self setImage:image forState:UIControlStateNormal];
}
1
gehen die schnelle Antwort für jedermann zu geben, die über dieses Problem kommt wie ich.
Das Problem besteht darin, dass Pfade zu Bildern in Interface Builder anders sind als in Ihrer App.
let bundle = Bundle(for: self.classForCoder)
image = UIImage(named: "your_image.png", in: bundle, compatibleWith: self.traitCollection)!
self.setImage(image, for: .normal)