Ho utilizzato questo buono tutorial per creare una classe UIPopoverBackgroundView personalizzata.UIPopoverBackgroundView personalizzato: nessuna ombra esterna
Funziona bene. L'unico problema è che non ottengo il tipico drop shadow di UIPopoverController e lo voglio. Ho provato a specificarlo sul livello della mia istanza UIPopoverBackgroundView senza successo. La mia istanza di UIPopoverController non sembra avere una vista pubblica da manipolare. Anche aggiungerlo al contenuto del popover non funziona.
Probabilmente davvero semplice: come si aggiunge un'ombra esterna quando si utilizza una classe UIPopoverBackgroundView personalizzata?
// UIPopoverBackgroundView.m
-(id)initWithFrame:(CGRect)frame{
if (self = [super initWithFrame:frame]) {
_borderImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"bg-popover.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(CAP_INSET,CAP_INSET,CAP_INSET,CAP_INSET)]];
_arrowView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg-popover-arrow.png"]];
[self addSubview:_borderImageView];
[self addSubview:_arrowView];
self.layer.shadowOffset = CGSizeMake(50, 50);
self.layer.shadowColor = [[UIColor blackColor] CGColor];
}
return self;
}
Grazie tanto per questo! –
Ho solo pensato di aggiungere che questo ha funzionato per me, ma ho avuto problemi di prestazioni. Rasterizzare il livello di sfondo ha aiutato immensamente: 'backgroundImageView.layer.shouldRasterize = YES;' – Maurizio
Interessante - Non ho notato alcun ritardo significativo (su iPad 2) ma buono a sapersi. –