2013-03-07 1 views
0

Мне нужно центрировать и масштабировать UIImage в UIImageView с contentMode UIViewContentModeTopLeft, используя только CGAffineTransform. Я не могу использовать contentMode UIViewContentModeCenter, потому что мне нужна полная информация CGAffineTransform.Как центрировать масштаб (вращать) UIImage в UIImageView

До сих пор я использую что-то вроде этого, где _imageView - это UIImageView и изображение UIImage.

_imageView.image = image; 
CGFloat scale = fmaxf(_imageView.bounds.size.width/_imageView.image.size.width, _imageView.bounds.size.height/_imageView.image.size.height); 
CGAffineTransform transform = CGAffineTransformIdentity; 
transform = CGAffineTransformTranslate(transform, _imageView.image.size.width * 0.5, _imageView.image.size.height * 0.5); 
transform = CGAffineTransformScale(transform, scale, scale);  
_imageView.transform = transform; 

Масштабирование в порядке, но изображение всегда имеет смещение вправо справа. Кто-нибудь знает, как это сделать, не используя contentMode UIViewContentModeCenter?

ответ

2

Попробуйте это:

CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"]; 
scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; 
scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)]; 
scaleAnim.removedOnCompletion = YES; 
[_imageView.layer addAnimation:scaleAnim forKey:nil]; 
+0

Вы также можете попробовать играть с CALayer его [anchorPoint] (https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/ CoreAnimationBasics/CoreAnimationBasics.html # // apple_ref/DOC/UID/TP40004514-CH2-SW15). –