Раскройте UIButton при касании в iPhone - PullRequest
0 голосов
/ 17 ноября 2011

Когда пользователь касается моего подкласса UIButton, я хочу, чтобы кнопка увеличилась в размере наружу. Однако, когда я манипулирую рамкой кнопки в событии touchDown, ничего не происходит. Вызывается событие touchDown, и я могу изменить другие свойства, например цвет, но не рамку.

Что здесь происходит?

- (id)initWithFrame:(CGRect)frame {    
    self = [super initWithFrame:frame];

    if (self) {        
        [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
    }  

    return self;
}

- (void)touchDown:(id)sender {
    self.frame = CGRectInset(self.frame, -20, -20);
}

РЕДАКТИРОВАТЬ: Кнопка вложена глубоко в иерархию представлений, но каждое суперпредставление имеет clipsToBounds = NO.

Ответы [ 3 ]

1 голос
/ 17 ноября 2011

вместо смены кадра сделайте что-то вроде:

self.transform = CGAffineTransformMakeScale (0.8, 0.8);
0 голосов
/ 17 ноября 2011

Проблема заключалась в том, что мое суперпредставление реализует layoutSubviews и сбрасывает мои кадры подпредставления каждый раз, когда я обновляю их кадр.

0 голосов
/ 17 ноября 2011

Вы можете попробовать что-то вроде этого вместо self.frame, которое вы используете в методе touchDown выше:

#define EXPAND_BY 5.0
[self setBounds:CGRectMake(-EXPAND_BY, -EXPAND_BY, 
                 self.bounds.size.width + EXPAND_BY * 2, 
                 self.bounds.size.height + EXPAND_BY * 2)];

Просто убедитесь, что вернули границы, иначе ваша кнопка будет продолжать расширяться.

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