在UiButton中对齐图像和标题

时间:2013-07-26 05:52:08

标签: ios ios5

我希望在UiButton中对齐标题和图像,使标题显示在左侧,图像显示在最右侧。 请注意,按钮处于拉伸状态,以便水平填充屏幕。

按钮布局应如下所示: - [title ..]

标题应该有一些左边填充。 图像应该有一些正确的填充。

CGFloat width = self.frame.size.width;
CGFloat imageWidth = [button currentImage].size.width;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 10, 0, 0)];
[button setImageEdgeInsets:UIEdgeInsetsMake(0, width - imageWidth - 10, 0, 0)];

但是,虽然标题左对齐,但左边有一个很多的空格。图像根本没有出现!

3 个答案:

答案 0 :(得分:5)

以下代码将起作用

UIButton *sectionheader=[[UIButton alloc]initWithFrame:CGRectMake(0,0,320,44)];
[sectionheader setImageEdgeInsets:UIEdgeInsetsMake(0,6,0,0)];
sectionheader.userInteractionEnabled=NO;
[sectionheader setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];

//现在创建标签并将按钮添加到按钮

UILabel *lblkey=[[UILabel alloc] initWithFrame:CGRectMake(0,0,sectionheader.frame.size.width-10,sectionheader.frame.size.height)];

lblkey.accessibilityValue=@"Value";
lblkey.font=[UIFont fontWithName:themefont size:20];
lblkey.text=[creteria uppercaseString];
lblkey.backgroundColor=[UIColor clearColor];
lblkey.shadowColor = [UIColor blackColor];
lblkey.shadowOffset = CGSizeMake(0, 2);
lblkey.textAlignment=NSTextAlignmentRight;
lblkey.textColor=[UIColor whiteColor];
[sectionheader addSubview:lblkey];

并且假设您的值总是会改变,并且您希望使其比Make UIButton类更完美,而不是在该类别类中添加上述代码,而不仅仅是调用以下方法来更改该标签的值

+(void)settitle:(NSString *)value:(UIButton *)selfbutton
{
     for (UILabel *valuelabel in selfbutton.subviews)
     {
         if ([valuelabel.accessibilityValue isEqualToString:@"Value"])
         {
             valuelabel.text=value;
         }
     }   
}

privew

答案 1 :(得分:3)

我将选择替代品你可以做的是在一个视图中添加三个控件。让我们说ParentView

1) yourButton 
2) yourlable // don't use button title instead use this lable.
3) imageView

现在将ParentView自动调整大小如下:

enter image description here

因为yourButton将水平拉伸,它会自动调整ParentView的大小。 从这里开始,你只需要关注位置。

yourlable之后parentViewyourButton设置为最左侧,并将autosize属性设置为:

enter image description here 所以它始终保持在ParentView的极左侧
并在imageView中将parentView位置设置为极右,并将autosize属性设置为:
enter image description here所以它始终保持在ParentView的极右侧 希望它会有所帮助。

答案 2 :(得分:0)

如果您在xib中添加了按钮,并且想要设置标题和图像,则可以从“属性”检查器中执行此操作。  在attributeinspector中有一个名为Edge的属性。默认情况下,它已设置内容。但还有其他两个选项,分别为Title和Image。 并且正好在Inset Property下面,您可以根据需要设置标题和图像。如果您选择标题,那么您也可以设置标题(按照您的意愿向左或向右移动)同样为图像