Повернуть UIImage в drawRect - PullRequest
0 голосов
/ 26 марта 2011

У меня есть следующий код, который отображает изображение при вызове drawRect.

  UIImage *sourceImage = [UIImage imageNamed:@"icon.png"];    


CGRect rect = CGRectMake(12.5, 12.5, 
                         sourceImage.size.width, 
                         sourceImage.size.height);

[sourceImage drawInRect:rect];

Как мне повернуть это на несколько градусов, прежде чем оно будет нарисовано, все, что я прочитал, нуждается в этом в ImageView, которое кажется тяжелым в drawRect

Ответы [ 2 ]

6 голосов
/ 26 марта 2011
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIImageView *imageView = [ [ UIImageView alloc ] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ];
imageView.image = image;
[self addSubview:imageView];
CGAffineTransform rotate = CGAffineTransformMakeRotation( 1.0 / 180.0 * 3.14 );
[imageView setTransform:rotate];
4 голосов
/ 26 марта 2011

Поворот (или любое другое преобразование, выполненное матрицей преобразования) не является "тяжелым".Все преобразования в основном представляют собой простые умножения вектора и небольшой матрицы (см. документация Apple Quartz 2D по математике )

Используйте CGContextRotateCTM(context, radians);, прежде чем рисовать изображение с помощью [sourceImage drawInRect:rect];.Если вам нужно повернуть изображение вокруг другой точки, переведите сначала CGContextTranslateCTM.

...