iPhone UIButton - положение изображения - PullRequest
111 голосов
/ 25 марта 2010

У меня есть UIButton с текстом «Исследовать приложение» и UIImage (>) В Interface Builder это выглядит так:

[ (>) Explore the app ]

Но мне нужно поместить это UIImage ПОСЛЕ текста:

[ Explore the app (>) ]

Как мне переместить UIImage вправо?

Ответы [ 13 ]

1 голос
/ 26 марта 2016
button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
0 голосов
/ 24 января 2017

Опираясь на предыдущие ответы. Если вы хотите, чтобы между значком и заголовком кнопки было поле, код должен немного измениться, чтобы не допустить плавания надписи и значка над границами кнопок внутреннего размера.

let margin = CGFloat(4.0)
button.titleEdgeInsets = UIEdgeInsetsMake(0, -button.imageView.frame.size.width, 0, button.imageView.frame.size.width);
button.imageEdgeInsets = UIEdgeInsetsMake(0, button.titleLabel.frame.size.width, 0, -button.titleLabel.frame.size.width)
button.contentEdgeInsets = UIEdgeInsetsMake(0, margin, 0, margin)

Последняя строка кода важна для расчета размера содержимого при автоматическом размещении.

0 голосов
/ 11 октября 2016

Это решение работает на iOS 7 и выше

Просто подкласс UIButton

@interface UIButton (Image)

- (void)swapTextWithImage;

@end

@implementation UIButton (Image)

- (void)swapTextWithImage {
   const CGFloat kDefaultPadding = 6.0f;
   CGSize buttonSize = [self.titleLabel.text sizeWithAttributes:@{
                                                               NSFontAttributeName:self.titleLabel.font
                                                               }];

   self.titleEdgeInsets = UIEdgeInsetsMake(0, -self.imageView.frame.size.width, 0, self.imageView.frame.size.width);
   self.imageEdgeInsets = UIEdgeInsetsMake(0, buttonSize.width + kDefaultPadding, 0, -buttonSize.width); 
}

@end

Использование (где-то в вашем классе):

[self.myButton setTitle:@"Any text" forState:UIControlStateNormal];
[self.myButton swapTextWithImage];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...