2013-08-28 22 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];