У меня есть вид с прокруткой.Я использую код для добавления меток к просмотру прокрутки.Поскольку существует много избыточного кода, я попытался переместить создание метки в отдельную функцию, которая возвращает UILabel.Вот эта функция:
- (UILabel *) f_MakeLabelWithL:(float)MyLeft T:(float)MyTop W:(float)MyWidth H:(float)MyHeight Align:(UITextAlignment)MyAlign
Font:(UIFont *)MyFont TextColor:(UIColor *)MyTextColor BGColor:(UIColor *)MyBGColor {
CGRect rect = CGRectMake(MyLeft, MyTop, MyWidth, MyHeight);
UILabel *label = [[[UILabel alloc] initWithFrame:rect] autorelease];
label.adjustsFontSizeToFitWidth = YES;
label.backgroundColor = MyBGColor;
label.font = MyFont;
label.numberOfLines = 0;
label.textAlignment = MyAlign;
label.textColor = MyTextColor;
return label;
}
Я устанавливаю текст метки после его возврата.Или так я и собирался.На самом деле, метка с голубым фоном выглядит как сплошной черный прямоугольник.Один с ясным фоном совершенно ясен.Хуже того: представление прокрутки не будет прокручиваться, и попытка сделать это приводит к сбою приложения без каких-либо объяснений в консоли отладчика.
Тем не менее, весь этот код работает нормально и просто отлично.
Кто-нибудь знает почему?
Обновление: вставка кода в линию исправила отображение меток.Но я также использовал функцию для создания изображений:
- (UIImageView *) f_MakeImageWithL:(float)MyLeft T:(float)MyTop W:(float)MyWidth H:(float)MyHeight File:(NSString *)MyFile {
CGRect rect = CGRectMake(MyLeft, MyTop, MyWidth, MyHeight);
UIImageView *oImageView = [[[UIImageView alloc] initWithFrame:rect] autorelease];
NSString *s = [[Isystant f_DocumentsPath] stringByAppendingPathComponent:MyFile];
UIImage *oImage = [UIImage imageWithContentsOfFile:s];
[oImageView setImage:oImage];
oImageView.backgroundColor = [UIColor redColor];
oImageView.opaque = YES; // explicitly opaque for performance
return oImageView;
}
Это создавало изображения, но проблема замороженной прокрутки / сбоя не исчезла, пока я не вставил этот код обратно в строку.