web-dev-qa-db-ja.com

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

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

ここに私のコードがあります:

    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 = ???
114
RAGOpoR
//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)];

そしてスウィフトで

//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)
438
cannyboy

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

Attribute inspector setting

39
eladleb

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
14
drawnonward

私のプロジェクトでは、この拡張ユーティリティを使用しています。

extension UIButton {

    func moveTitle(horizontal hOffset: CGFloat, vertical vOffset: CGFloat) {
        self.titleEdgeInsets.left += hOffset
        self.titleEdgeInsets.top += vOffset
    }

}
2
Luca Davanzo