Можно ли настроить положение x, y для titleLabel из UIButton? - PullRequest
114 голосов
/ 11 мая 2010

Можно ли настроить положение x, y для titleLabel из 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 ]

436 голосов
/ 21 мая 2010
//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)
39 голосов
/ 02 января 2013

Самый простой способ сделать это визуально - это использовать инспектор атрибутов ** (появляется при редактировании xib / раскадровки), установив " edge"свойство для заголовка, настройка его вставок, затем установка свойства" edge "для изображения и корректировка соответственно. Обычно это лучше, чем кодировать его, поскольку его легче поддерживать и оно очень визуально.

Attribute inspector setting

14 голосов
/ 11 мая 2010

Получите из UIButton и используйте следующий метод:

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

Edit:

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

@implementation PositionTextButton
- (CGRect)titleRectForContentRect:(CGRect)contentRect {
  contentRect.origin = titleOrigin;
  return contentRect;
}
@end
2 голосов
/ 19 апреля 2018

Для моих проектов у меня есть эта утилита расширения:

extension UIButton {

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...