我希望在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)];
但是,虽然标题左对齐,但左边有一个很多的空格。图像根本没有出现!
答案 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;
}
}
}
答案 1 :(得分:3)
我将选择替代品你可以做的是在一个视图中添加三个控件。让我们说ParentView
:
1) yourButton
2) yourlable // don't use button title instead use this lable.
3) imageView
现在将ParentView
自动调整大小如下:
因为yourButton
将水平拉伸,它会自动调整ParentView
的大小。
从这里开始,你只需要关注位置。
在yourlable
之后parentView
将yourButton
设置为最左侧,并将autosize属性设置为:
所以它始终保持在ParentView
的极左侧
并在imageView
中将parentView
位置设置为极右,并将autosize属性设置为:
所以它始终保持在ParentView
的极右侧
希望它会有所帮助。
答案 2 :(得分:0)
如果您在xib中添加了按钮,并且想要设置标题和图像,则可以从“属性”检查器中执行此操作。 在attributeinspector中有一个名为Edge的属性。默认情况下,它已设置内容。但还有其他两个选项,分别为Title和Image。 并且正好在Inset Property下面,您可以根据需要设置标题和图像。如果您选择标题,那么您也可以设置标题(按照您的意愿向左或向右移动)同样为图像