127

titleLabelaの x、y 位置を調整することは可能UIButtonですか?

これが私のコードです:

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [btn setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
    [btn setTitle:[NSString stringWithFormat:@"Button %d", i+1] forState:UIControlStateNormal];     
    [btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
    btn.titleLabel.frame = ???
4

5 に答える 5

459
//make the buttons content appear in the top-left
[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
[button setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];

//move text 10 pixels down and right
[button setTitleEdgeInsets:UIEdgeInsetsMake(10.0f, 10.0f, 0.0f, 0.0f)];

そしてSwiftでは

//make the buttons content appear in the top-left
button.contentHorizontalAlignment = .Left
button.contentVerticalAlignment = .Top

//move text 10 pixels down and right
button.titleEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 0.0, 0.0)

スイフト5

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.titleEdgeInsets = UIEdgeInsets(top: 10.0, left: 10.0, bottom: 0.0, right: 0.0)
于 2010-05-21T17:20:11.077 に答える
40

視覚的に行う最も簡単な方法は、属性インスペクター ** (xib/ストーリーボードの編集時に表示される) を使用し、" edge " プロパティをタイトルに設定し、インセットを調整してから、"edge" プロパティを画像に設定し、それに応じて調整することです。 . 通常は、コーディングよりも優れています。メンテナンスが容易で視覚的にも優れているからです。

属性インスペクターの設定

于 2013-01-02T16:09:21.463 に答える
14

UIButton から派生し、次のメソッドを実装します。

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

編集:

@interface PositionTitleButton : UIButton
@property (nonatomic) CGPoint titleOrigin;
@end

@implementation PositionTextButton
- (CGRect)titleRectForContentRect:(CGRect)contentRect {
  contentRect.origin = titleOrigin;
  return contentRect;
}
@end
于 2010-05-11T04:34:09.333 に答える