Изменение размера UIViews

Если мне нужно изменить размер или изменить положение UIView, есть ли лучший способ сделать это, чем следующее:

view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height - 100);

Или, другими словами, есть ли способ просто сказать view.frame.size.height - = 100 через свойство без чтения?

Ответы

Ответ 1

Если вы хотите эффект -=100, просто выполните:

CGRect frame = view.frame;
frame.size.height -= 100;
view.frame = frame;

Тогда вы можете быть уверены, что вы точно меняете то, что хотите изменить.

Кроме этого, я не думаю, что есть способ.

Ответ 2

Нельзя напрямую управлять высотой.

Обратите внимание, что каждый раз, когда вы вызываете view.frame, он вызывает метод, поэтому ваш код эквивалентен:

view.frame = CGRectMake([view frame].origin.x, [view frame].origin.y, [view frame].size.width, [view frame].size.height - 100);

Рассмотрим вместо этого настройку кадра в отдельной переменной:

CGRect frame = view.frame;
frame.size.height -= 100;
view.frame = frame;

Ответ 3

Используйте эту категорию UIView+position, чтобы получить удобный доступ к элементам кадра:

http://bynomial.com/blog/?p=24