Поверните использование преобразования, затем измените источник кадра, и представление расширяется?

Это - вполне iPhone quandry. Я работаю над библиотекой, но сузил свою проблему к очень простому коду. То, что делает этот код, создают 50x50 представление, применяется, вращение преобразовывают нескольких градусов, затем смещает кадр вниз несколько раз. Результат 50x50, представление является теперь намного большим взглядом.

Вот код:

// a simple 50x50 view
UIView *redThing = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
redThing.backgroundColor = [UIColor redColor];

[self.view addSubview:redThing];

// rotate a small amount (as long as it's not 90 or 180, etc.)
redThing.transform = CGAffineTransformRotate(redThing.transform, 0.1234);

// move the view down 2 pixels
CGRect newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;

// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;

// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;

// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;

Так, какого черта продолжается? Теперь, если я перемещаюсь, представление путем применения перевода преобразовывают, оно работает просто великолепно. Но это не то, что я хочу сделать, и это должно работать так или иначе.

Какие-либо идеи?

6
задан STW 7 August 2013 в 14:12
поделиться

1 ответ

Из документации UIView:

Если свойство transform также установлено, используйте вместо него свойства bounds и center; иначе анимация изменений свойства frame не будет правильно отражать фактическое расположение представления.

Предупреждение: Если свойство transform не является identity transform, значение этого свойства не определено и поэтому должно быть проигнорировано.

Другими словами, я бы остерегался использовать свойство frame, когда установлено transform.

15
ответ дан 8 December 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: