2011-06-24 131 views
1

可能重复:
UIButton: how to center an image and a text using imageEdgeInsets and titleEdgeInsets?位置像所有国家

我定制我的UIButton的图像和标签的位置,但它仅在初始状态设置。什么是黑客,我如何确保所有4个按钮状态的定位?

这是我正在使用的代码。中毒对第一个状态起作用,但在其他州重新设置。

CGRect imgRect = reviewsButton.imageView.frame; 
imgRect.origin.x = 10; 
imgRect.origin.y += 4;  
reviewsButton.imageView.frame = imgRect; 

CGRect lblrect = reviewsButton.titleLabel.frame; 
lblrect.origin.x = 85; 
reviewsButton.titleLabel.frame = lblrect; 
[reviewsButton setBackgroundColor:[UIColor colorWithRed:0.192 green:0.198 blue:0.206 alpha:0.15]]; 

回答

0

我从来没有能够获得所需的布局与UIButton的工作,所以我创建了一个自定义的UIView和处理触摸那里。

0

@jspooner在完成修改imageview框架和标签框架后设置按钮框架可能会有所诀窍。

+0

谢谢,但没有影响其他按钮状态 – jspooner

0

您应该创建图像,然后把它应用到按钮的状态:

UIImage* reviewButtonImage = [UIImage initWithContentsOfFile:/*path*/]; 
[reviewButton setImage:reviewButtonImage forState:UIControlStateNormal|UIControlStateHighlighted|UIControlStateDisabled|UIControlStateSelected]; 
+0

Thx但唯一的问题是'UIImage'没有视图或允许您设置原点。我喜欢你如何将许多状态放入forState方法。我不知道你可以这样做。 – jspooner

+0

您对UIImageView和框架的评论是正确的。我犯了一个错误。我从回答中删除了我的错误 – gsempe

+0

@gsempe多个状态不起作用 – Dejell

5

有哪些已作出专门为此

@property(nonatomic) UIEdgeInsets contentEdgeInsets 
@property(nonatomic) UIEdgeInsets imageEdgeInsets 
@property(nonatomic) UIEdgeInsets titleEdgeInsets 

使用这个属性来调整大小和位置的按钮图像的有效绘制矩形UIButton性能。您可以为四个插图(顶部,左侧,底部,右侧)中的每一个指定不同的值。正值缩小或缩小,使边缘靠近按钮的中心。负值会扩大或突破该边缘。使用UIEdgeInsetsMake函数为此属性构造一个值。默认值是UIEdgeInsetsZero。