当我设置内容插入以将其移动到底部时,为什么UIButton会将标题标签一直向右移动?

时间:2013-06-17 23:06:42

标签: ios uibutton uiedgeinsets

我正在尝试使用图片上方的图片制作UIButton。为此,我尝试将按钮的边缘插入设置为:

[button setImageEdgeInsets:UIEdgeInsetsMake(0.0f, 0.0f, 10, 0.0f)];
[button setTitleEdgeInsets:UIEdgeInsetsMake(10, 0.0, 0.0, 0.0)];

我得到的是一个图像位于同一位置的按钮,文本在一个字符宽的空间内一直压到一边。

如何设置插图,以便在图片上方显示图像?这真的要问这个吗?

1 个答案:

答案 0 :(得分:1)

你错误地计算了edgeInSets。他们并不像你认为的那样。这是我的测试代码。我花了一些时间将图像和标题放在正确的位置。

UIButton *tmp_testBtn = [[UIButton alloc] initWithFrame:CGRectMake(50, 200, 60, 40)];
tmp_testBtn.backgroundColor = [UIColor grayColor];
[tmp_testBtn setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 20, 0)];
[tmp_testBtn setImage:[UIImage imageNamed:@"France"] forState:UIControlStateNormal];
[tmp_testBtn setTitleEdgeInsets:UIEdgeInsetsMake(20, -258, 0, 0)];
[tmp_testBtn setTitle:@"testbutton" forState:UIControlStateNormal];

CGRect contentRect = [tmp_testBtn contentRectForBounds:tmp_testBtn.bounds];
NSLog(@"contenRect:%f,%f,%f,%f",contentRect.origin.x,contentRect.origin.y,contentRect.size.width,contentRect.size.height);
CGRect titleRect = [tmp_testBtn titleRectForContentRect:contentRect];
NSLog(@"titleRect:%f,%f,%f,%f",titleRect.origin.x,titleRect.origin.y,titleRect.size.width,titleRect.size.height);
CGRect imageRect = [tmp_testBtn imageRectForContentRect:contentRect];
NSLog(@"imageRect:%f,%f,%f,%f",imageRect.origin.x,imageRect.origin.y,imageRect.size.width,imageRect.size.height);

[self.view addSubview:tmp_testBtn];
[tmp_testBtn release];

顺便说一句,我不会这样做。我更喜欢自定义一个带有UIImageView和UILabel的按钮。