Увеличение ширины и высоты после применения CGAffineTransformRotate к UIView

Я хочу повернуть представление программно, потому что я использовал ниже код:

CGAffineTransform rotateTransform = contentView.transform;
CGAffineTransform rotatenewTransform  = CGAffineTransformRotate(rotateTransform,aFloatRotate);
contentView.transform = rotatenewTransform;

Когда я это делаю, увеличивается ширина и высота contentView (мой UIView).

Что мне делать, чтобы contentView оставался таким, каким он есть, и он тоже вращается?

заблаговременно.

Здесь я объясняю свою проблему более подробно:

мое содержание содержит кнопки и изображение в нем. этот contentView добавлен в фоновом режиме, и этот контентный образ не должен выходить из этой фоновой границы.

но когда я поворачиваю это содержимое по верхнему коду, увеличивается ширина и высота содержимогоView, и поэтому несколько раз он выходит из рамки фона.

Надеюсь, вам это станет ясно.:)

Ответ 1

Ширина и высота (предположительно вы принимаете это от frame.size) должны меняться, потому что они описывают самый маленький прямоугольник, который содержит весь повернутый вид - если вы поворачиваете прямоугольник на 45 градусов, тогда прямоугольник удерживает повернутый прямоугольник шире и выше исходного прямоугольника.

"Реальный" размер вашего повернутого представления будет по-прежнему доступен в прямоугольнике bounds - это выражается в внутренней системе координат, которая не вращается.

Итак, если ваш оригинальный frame был источником (100,100), размером (100,50), ваше повернутое представление будет иметь frame, где происхождение и размер были прямоугольником, который мог бы соответствовать вашему вращению в нем, описанных в системе координат наблюдения. Если вы сейчас это сделали:

CGFloat width = contentView.frame.size.width;

Вы получите свое измененное значение. Однако, если вы это сделали:

CGFloat width = contentView.bounds.size.width;

Вы получите свое первоначальное значение ширины 100.