В какой момент я могу безопасно получить доступ к фрейму в подклассе UIImageView? - PullRequest
0 голосов
/ 17 мая 2009

Я подклассифицировал UIImageView. После

self = [super initWithImage:image]

Я пытаюсь получить доступ к значению self.frame.origin.y. Но это всегда 0.0. Мгновение спустя, в методе, который вызывается извне, свойство полностью там с хорошим значением 100.0.

Я также пытался переопределить - (id) initWithFrame: (CGRect) aRect, но результат тот же. Правильно ли установлено это свойство, как только представление добавляется в какое-либо суперпредставление? Я считаю, что я пытаюсь получить прямоугольник кадра сразу после того, как объект был выделен и инициализирован, но до того, как он будет добавлен в суперпредставление. Это происходит на одну строку позже.

Ответы [ 2 ]

3 голосов
/ 17 мая 2009

Рамка объекта может быть установлена ​​в любое время. Если вы хотите отслеживать изменения в кадре, переопределите setFrame: и setBounds:

- (void)setFrame:(CGRect)frame
{
    [super setFrame:frame];
    // Your code here
}
- (void)setBounds:(CGRect)bounds
{
    [super setBounds:bounds];
    // Your code here
}
1 голос
/ 17 мая 2009

Я не могу воспроизвести эту проблему, но мне нужно немного интерполировать, чтобы угадать, откуда вы ожидаете 100. Где вы это устанавливаете? Кажется, это работает нормально:

- (id)initWithImage:(UIImage*)image {
    self = [super initWithImage:image];
    if (self != nil)
    {
        CGRect frame = self.frame;
        frame.origin = CGPointMake(100.0, 100.0);
        self.frame = frame;
        NSLog(@"y=%d", self.frame.origin.y);
        NSLog(@"frame=%@", NSStringFromCGRect(self.frame));
    }
    return self;
}

Возможно, вы могли бы предоставить немного больший кусок кода?

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