Как обновить CGFrame? - PullRequest
       2

Как обновить CGFrame?

0 голосов
/ 12 декабря 2011

Следующий код имеет (как минимум один) глубокий недостаток: как только CGFrame установлено, его местоположение фиксируется.

-(UIImageView*) ownImageView {

    if (ownImageView == nil) {
        ownImageView = [[UIImageView alloc] initWithFrame:
                  CGRectMake(self.xPosition, self.yPosition, 
                  [constants cardWidth], [constants cardHeight])];

        [ownImageView setImage:self.faceImage];
    }

    return ownImageView;
}

Я хотел бы повторно использовать UIImageView (после создания я не хочу его перераспределять). Вместо этого я хотел бы изменить координаты x, y кадра, который он содержит.

Следующий код работает нормально, однако кажется небрежно расточительным

-(UIImageView*) ownImageView {

    [ownImageView removeFromSuperview];
    ownImageView = [[UIImageView alloc] initWithFrame:
               CGRectMake(self.xPosition, self.yPosition, 
               [constants cardWidth], [constants cardHeight])];

    [ownImageView setImage:self.faceImage];

    return ownImageView;
}

Вопрос : Как бы вы справились с этим, сохранив как можно больше ленивых экземпляров?

Вид представляет собой двухмерный прямоугольник, движущийся вдоль экрана. Я хотел бы представить «перемещение», просто изменив позицию X / Y существующего представления вместо замены его новой копией.

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011
ownImageView.frame = CGRectMake(x,y,w,h);
1 голос
/ 12 декабря 2011

Если вы хотите переместить его, то самое простое - сделать так, чтобы Core Animation сделала всю работу за вас.
Для более подробной информации и опций проверьте UIView Class Reference

[UIView animateWithDuration:2
                      delay:0
                    options:UIViewAnimationCurveEaseInOut
                 animations:^{
                     self.THE_VIEW.center = CGPointMake(200, 200);
                //  OR you can change it's frame if you prefer
                 } 
                 completion:NULL];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...