Я подклассифицировал UIAlertView следующим образом:
@interface NarrationAlertView : UIAlertView {
UIImage * backgroundImage; //The image I want as custom background
UILabel * textualNarrationView; //The test I wanna be displayed on the view
}
И реализовал его следующим образом:
- (id)initNarrationViewWithImage:(UIImage *)image{
if (self = [super init]){
UILabel * alertTextLabel = [[UILabel alloc] initWithFrame:CGRectZero];
self.textualNarrationView = alertTextLabel;
[alertTextLabel release];
[self addSubview:alertTextLabel];
}
return self;
}
- (void)drawRect:(CGRect)rect {
/* Here I draw the image as background */
CGSize imageSize = self.backgroundImage.size;
[self.backgroundImage drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
}
- (void)layoutSubviews {
/* To fit the text */
[textualNarrationView sizeToFit];
CGRect textRect = textualNarrationView.frame;
textRect.origin.x = (CGRectGetWidth(self.bounds) - CGRectGetWidth(textRect)) / 2;
textRect.origin.y = (CGRectGetHeight(self.bounds) - CGRectGetHeight(textRect)) / 2;
textRect.origin.y -= 70;
textualNarrationView.frame = textRect;
}
- (void)show{
/* Showing the view */
[super show];
CGSize imageSize = self.backgroundImage.size;
self.bounds = CGRectMake(0, 0, imageSize.width, imageSize.height);
}
В предыдущих версиях iOS (я всегда тестирую насимулятор), подкласс работает нормально, и когда он отображается, он отображает собственное фоновое изображение, нарисованное правильно, и просто текст , тогда как в версии 4.2 он рисует классический фон UIAlertView (синий прямоугольник с закругленными углами) поверх моего изображения.
Что я делаю не так?Будем благодарны за любые предложения по программированию UIAlertView и UIView.
ОБНОВЛЕНИЕ Кто-нибудь получил какой-нибудь класс замены UIAlertView для совместного использования?