2013-08-28 17 views
4

titleEdgeInsets用于对齐按钮上的标题和图片。我在左侧做了图像,在右侧做了标题。但是当我点击按钮时,标题正在向左移动。谢谢UIButton titleEdgeInsets

UIImage *image = [UIImage imageNamed:imageName]; 
    [self setImage:image forState:UIControlStateNormal]; 

CGSize imageSize = self.imageView.frame.size; 
CGSize titleSize = self.titleLabel.frame.size; 

self.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 
self.titleEdgeInsets = UIEdgeInsetsMake(0, ((self.frame.size.width-titleSize.width)/2)-imageSize.width, 0, 0); 
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 

status is normal

status is clicked

+0

难道是因为你只为'UIControlStateNormal'设置了图像 – chris13

+0

我发现边缘插入行为非常违反直觉,所以我创建了一个小型的演示应用程序,你可以使用https://github.com/tomas789/UIButtonEdgeInsets – tomas789

回答

13

这是例如,对于---->设置标题和图像中直:) 尝试这种方式的另一种方式,

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
aButton.frame = CGRectMake(0, 0, self.view.bounds.size.width, 40); 
[aButton setImage:[UIImage imageNamed:@"imageName"] forState:UIControlStateNormal]; 
[aButton setTitle:@"Rate us on app store" forState:UIControlStateNormal]; 
[aButton setTitleEdgeInsets:UIEdgeInsetsMake(2, 50, 2, 20)];//set ur title insects also 
[aButton setImageEdgeInsets:UIEdgeInsetsMake(2, -200, 2, 2)];//make negative edge for left side 
[aButton setBackgroundColor:[UIColor greenColor]]; 
[self.view addSubview:aButton];