In layoutSubviews
Sto chiamando setImage()
e lo passo a UIImage
ma non compare mai in Interface Builder, ma si presenta sempre quando eseguo il programma.Perché il mio IBDesignable non mi consente di usare setImage: sul mio UIButton personalizzato?
5
A
risposta
12
Probabilmente si sta caricando il vostro UIImage con questo metodo:
UIImage *image = [UIImage imageNamed:@"image"];
Questo non funziona in Interface Builder perché imageNamed: metodo utilizza fascio principale, ma IB carichi risorse in modo diverso. Provare qualcosa di simile:
- (void)prepareForInterfaceBuilder
{
UIImage *image = [UIImage imageNamed:@"image" inBundle:[NSBundle bundleForClass:[self class]] compatibleWithTraitCollection:nil];
[self setImage:image forState:UIControlStateNormal];
}
1
Andando a dare la risposta rapida per chi si imbatte in questo problema come ho fatto io.
Il problema è che i percorsi delle immagini in Interface Builder sono diversi da quelli presenti nell'app.
let bundle = Bundle(for: self.classForCoder)
image = UIImage(named: "your_image.png", in: bundle, compatibleWith: self.traitCollection)!
self.setImage(image, for: .normal)