错误按钮上的 iOS 标题
Posted
技术标签:
【中文标题】错误按钮上的 iOS 标题【英文标题】:iOS title on wrong button 【发布时间】:2013-03-03 11:22:46 【问题描述】:我有一个很奇怪的问题。在一个视图中,我有三个按钮,每个按钮都有一个图像和一个标题。第一个按钮OK,第二个只显示一个图像,第三个显示正确的图像,但标题来自Button 2
。如下:
------------
I Image 1 I
I Title 1 I
------------
------------
I Image 2 I
I I
------------
------------
I Image 3 I
I Title 2 I
------------
我找不到造成这种情况的原因。
我有一个 UIButton 子类,它有一个如下所示的自定义 init 方法:
- (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];
中的框架设置。你应该改变那个框架。
这取决于您需要放置它的位置。尝试先给出一个静态框架并检查它是如何产生的。然后根据您的要求进行修改。不要将frame
作为它的框架。先把 origin.x 的值固定为常数,然后检查。
好的,嗯。奇怪的是我在另一个视图中使用了这个UIButton
subclass,它在那里工作。但我会努力的。
这可能是因为在这些情况下您将 frame.origin.x 传递为零。
【参考方案1】:
检查UILabel *titleLabel = [[UILabel alloc] initWithFrame:frame];
中的框架设置。您不应将 frame 设置为 frame
,这是 init 方法中的输入参数。尝试设置一个静态框架,然后根据您的要求进行修改,以将其放置在该视图中您需要的任何位置。基本上你的 origin.x
值出错了,这就是你得到奇怪输出的原因。
【讨论】:
以上是关于错误按钮上的 iOS 标题的主要内容,如果未能解决你的问题,请参考以下文章