Установка цвета фона UILabel приводит к сбою приложения

У меня есть следующий код:

UIImageView *photo = [[[UIImageView alloc] initWithFrame:CGRectMake(title_bar.titleView.frame.origin.x+130, title_bar.titleView.frame.origin.y-12, 22.0, 22.0)] autorelease];
UIImage *theImage = [UIImage imageNamed:@"question mark icon"];
photo.image = theImage;
UIView *new_view = [[UIView alloc] init];
[new_view addSubview:photo];
UILabel *new_label = [[UILabel alloc] initWithFrame:CGRectMake(title_bar.titleView.frame.origin.x-145, title_bar.titleView.frame.origin.y-12, 268.0, 22.0)];
[new_label setText:@"gregrgtg"];
[new_label setBackgroundColor:[UIColor clearColor]]; //COMMENTING THIS LINE OUT MAKES IT WORK
[new_view addSubview:new_label];
title_bar.titleView = new_view;

Когда фоновый цвет установлен на прозрачный, программа SIGABRTs. Если я закомментирую эту строку, она будет работать нормально (за исключением того, что фон для метки просто белый). Кроме того, если я просто инициализирую метку, а не initWithFrame, программа не рухнет, но моя метка не будет видна.


person Outback    schedule 08.07.2011    source источник


Ответы (1)


UIImageView *photo = [[[UIImageView alloc] initWithFrame:CGRectMake(title_bar.titleView.frame.origin.x+130, title_bar.titleView.frame.origin.y-12, 22.0, 22.0)] autorelease];
UIImage *theImage = [UIImage imageNamed:@"question mark icon"];
photo.image = theImage;
UIView *new_view = [[UIView alloc] init];
[new_view addSubview:photo];

title_bar.titleView = new_view;//this line by madhu

UILabel *new_label = [[UILabel alloc] initWithFrame:CGRectMake(title_bar.titleView.frame.origin.x-145, title_bar.titleView.frame.origin.y-12, 268.0, 22.0)];
[new_label setText:@"gregrgtg"];
[new_label setBackgroundColor:[UIColor clearColor]]; //COMMENTING THIS LINE OUT MAKES IT WORK
[new_view addSubview:new_label];

причина :

Вы добавили заголовок заголовка вашего заголовка, но ссылались на них раньше.

person Vijay-Apple-Dev.blogspot.com    schedule 08.07.2011
comment
Спасибо, это сработало! Если вы не возражаете, вы знаете, почему это работает? Я бы не подумал, что это будет иметь значение. - person Outback; 08.07.2011