CGAffineTransform: вращение на кнопке UIButton изменяет размер изображения - PullRequest
5 голосов
/ 14 июня 2010

У меня странная проблема с использованием UIButtons, типа custom.Я размещаю 4 из этих кнопок на UIScrollview, поворачивая каждую кнопку на произвольный угол, используя CGAffineTransform.Теперь кажется, что сами кнопки меняют размер в зависимости от угла поворота.

UIGraphicsBeginImageContext(tempCtxSize);
[cookbookImage drawInRect:CGRectMake(imgOffsetX, imgOffsetY+frmOffsetY, cookbookImage.size.width, cookbookImage.size.height)];
[cookbookFrame drawInRect:CGRectMake(0.0f, frmOffsetY, cookbookFrame.size.width, cookbookFrame.size.height)];
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

…

UIButton *cookbookViewButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cookbookViewButton setFrame:CGRectMake(0.0f, 0.0f, combinedImage.size.width, combinedImage.size.height)];

[cookbookViewButton setBackgroundColor:[UIColor clearColor]];
[cookbookViewButton setBackgroundImage:combinedImage forState:UIControlStateNormal];

CGAffineTransform rotation = [cookbookViewButton transform];
rotation = CGAffineTransformRotate(rotation, angle); // some random angle
[cookbookViewButton setTransform:rotation];

Ответы [ 2 ]

2 голосов
/ 20 июля 2012

Это системная ошибка: «Important Если свойство преобразования представления не содержит преобразования идентификаторов, кадр этого представления не определен, как и результаты его авторазмерного поведения».

from: Автоматическая обработка изменений макета с использованием правил автоматического изменения размера

Решение: установите для autoResizeSubviews родительского представления значение NO.

    parentView.autoresizesSubviews = NO;
0 голосов
/ 16 декабря 2010

Не устанавливайте рамку cookbookViewButton - установите границы.

...