2015-05-27 5 views
1

У кого-нибудь есть идея или пример, как я могу подкласса titleLabel от UIButton? Я хочу изменить текстовое поведение моей текстовой кнопки во время другого элемента управления. Я хочу, чтобы кнопка была выделена, тогда визуализируется только граница текста.Подклассификация titleLabel of UIButton

+0

По кодированию, что вы пробовали? – dnuka

+0

Вы должны подкласса 'UIButton' – Jasper

+0

У меня есть подкласса UIButton, проблема в том, как изменить границу текста должна быть достигнута в drawtextinRect. Но я не знаю, как я могу назвать этот метод во время разного состояния кнопки? –

ответ

0

Вы можете создать подкласс UIButton, в .h, вы можете иметь пользовательский UILabel как titleLabel из UIButton

@property (nonatomic, strong) UILabel *nameLabel; 

Если вы хотите вызвать какой-либо метод в разных состояниях UIButton, вы можете переписать метод:

- (void)setHighlighted:(BOOL)highlighted { 
    self.nameLabel.backgroundColor = [UIColor redColor]; 
} 


- (void)setSelected:(BOOL)selected { 
    self.nameLabel.backgroundColor = [UIColor blueColor]; 
} 

написать простой код, чтобы показать, как заказ на UIButton:

a simple code to show how to custom a UIButton

+0

Спасибо Stevechen, но моя проблема - метод drawTextInRect UILabel. Когда кнопка подсвечена, должен отображаться только текст на границе. Иначе текст обычно должен отображаться. –

+0

метод drawtextinrect (где я могу сделать свой текст, показанный только его границей) вызывается при инициализации метки. Вот почему я могу обрабатывать разные состояния кнопки –

+0

Если у вас есть другая идея, чтобы решить мою проблему, это будет очень хорошо –

0
  1. Создание пользовательских UIButton.
  2. Создать UILabel
  3. Используйте CALayer, чтобы нарисовать границу вокруг UILabel.
  4. Добавить UILabel как подпункт UIButton.

Пожалуйста, обратитесь к приведенному ниже коду, который делает то же самое. Добавьте границу для соответствующего состояния кнопки.

-(void)addBorderToButtonLabel 
{ 
    CGRect labelRect = self.sampleButton.bounds; 
    labelRect.origin.x = 10; 
    labelRect.origin.y = 5; 
    labelRect.size.width -= 10 *2; 
    labelRect.size.height -= 5 * 2; 

    UILabel *label = [[UILabel alloc] initWithFrame:labelRect]; 
    label.text = @"My Sample"; 
    label.textAlignment = NSTextAlignmentCenter; 
    label.layer.borderColor = [UIColor greenColor].CGColor; 
    label.layer.borderWidth = 3.0; 

    [self.sampleButton addSubview:label]; 
} 
+0

Граница текста метки не ярлыка –