У меня довольно странная проблема. В одном представлении у меня есть три кнопки, каждая из которых имеет изображение и заголовок. Первая кнопка в порядке, вторая показывает только изображение, а третья показывает правильное изображение, но заголовок от 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];
Может кто-нибудь найти то, что является причиной этого, или любая идея о том, что я могу сделать для ее решения?
Проверьте настройку фрейма в 'UILabel * titleLabel = [[UILabel alloc] initWithFrame: frame];'. Вы должны изменить этот фрейм. – iDev
Хорошо, на что? :) – Anders
Это основано на том, где вам нужно его поместить. Сначала попробуйте поставить статический фрейм и проверить, как это происходит. Затем измените его в соответствии с вашим требованием. Не давайте 'frame' в качестве рамки. Исправьте значение origin.x с константой и проверьте. – iDev