2013-03-03 3 views
1

У меня довольно странная проблема. В одном представлении у меня есть три кнопки, каждая из которых имеет изображение и заголовок. Первая кнопка в порядке, вторая показывает только изображение, а третья показывает правильное изображение, но заголовок от Button 2. Как показано ниже:Название iOS на неправильной кнопке

------------ 
I Image 1 I 
I Title 1 I 
------------ 

------------ 
I Image 2 I 
I   I 
------------ 

------------ 
I Image 3 I 
I Title 2 I 
------------ 

Я не могу найти причину этого.

У меня есть подкласс UIButton с методом пользовательской инициализации, который выглядит следующим образом:

- (id)initWithFrame:(CGRect)frame withImage:(UIImage *)image andTitle:(NSString *)title 
{ 

    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     self.backgroundColor = [UIColor clearColor]; 

     UIImageView *icon = [[UIImageView alloc] initWithImage:image]; 
     icon.backgroundColor = [UIColor clearColor]; 
     CGRect iconFrame = icon.frame; 
     iconFrame.origin.x = frame.size.width/2 - iconFrame.size.width/2; 
     iconFrame.origin.y = 5; 
     iconFrame.size.height = frame.size.height/2.5; 
     icon.frame = iconFrame; 

     [self addSubview:icon]; 

     UILabel *titleLabel = [[UILabel alloc] initWithFrame:frame]; 
     titleLabel.textAlignment = NSTextAlignmentCenter; 
     titleLabel.font = [UIFont fontWithName:@"TisaMobiPro" size:14]; 
     [titleLabel setText:title]; 
     titleLabel.textColor = [UIColor colorWithRed:1.000 green:1.000 blue:1.000 alpha:0.5]; 
     titleLabel.backgroundColor = [UIColor clearColor]; 

     CGRect titleFrame = titleLabel.frame; 
     titleFrame.origin.y = icon.frame.origin.y + icon.frame.size.height; 
     titleFrame.size.height = frame.size.height/2; 
     titleLabel.frame = titleFrame; 
     [self addSubview:titleLabel]; 
    } 
    return self; 
} 

добавить кнопки, как это:

int numberOfButtons = 3; 

CGRect mentionRect = CGRectMake(0, 10,self.menuContainer.frame.size.width/numberOfButtons, self.menuContainer.frame.size.height - 10); 
self.mentionButton = [[CustomBarButton alloc] initWithFrame:mentionRect withImage:[UIImage imageNamed:@"Images/Mentions.png"] andTitle:@"Mention"]; 
[self.menuContainer addSubview:self.mentionButton]; 


CGRect hashRect = CGRectMake(mentionRect.origin.x + mentionRect.size.width, 10,self.menuContainer.frame.size.width/numberOfButtons, self.menuContainer.frame.size.height - 10); 
self.hashtagButton = [[CustomBarButton alloc] initWithFrame:hashRect withImage:[UIImage imageNamed:@"Images/HashTagIcon.png"] andTitle:@"Hashtag"]; 
[self.menuContainer addSubview:self.hashtagButton]; 


CGRect photoRect = CGRectMake(hashRect.origin.x + hashRect.size.width, 10, self.menuContainer.frame.size.width/numberOfButtons, self.menuContainer.frame.size.height - 10); 
self.photoButton = [[CustomBarButton alloc] initWithFrame:photoRect withImage:[UIImage imageNamed:@"Images/CameraIcon.png"] andTitle:@"Photo"]; 
[self.menuContainer addSubview:self.photoButton]; 

Может кто-нибудь найти то, что является причиной этого, или любая идея о том, что я могу сделать для ее решения?

+0

Проверьте настройку фрейма в 'UILabel * titleLabel = [[UILabel alloc] initWithFrame: frame];'. Вы должны изменить этот фрейм. – iDev

+0

Хорошо, на что? :) – Anders

+0

Это основано на том, где вам нужно его поместить. Сначала попробуйте поставить статический фрейм и проверить, как это происходит. Затем измените его в соответствии с вашим требованием. Не давайте 'frame' в качестве рамки. Исправьте значение origin.x с константой и проверьте. – iDev

ответ

1

Проверьте настройку рамки в UILabel *titleLabel = [[UILabel alloc] initWithFrame:frame];. Вы не должны устанавливать фрейм как frame, который является параметром ввода в методе init. Попробуйте установить статический фрейм, а затем измените в соответствии с вашим требованием, чтобы поместить его туда, где вам это нужно в этом представлении. В основном ваше значение origin.x идет не так, и именно поэтому вы получаете странный результат.