如何在 UIImageView 中居中缩放(旋转)UIImage
Posted
技术标签:
【中文标题】如何在 UIImageView 中居中缩放(旋转)UIImage【英文标题】:How to center scale (rotate) a UIImage in a UIImageView 【发布时间】:2013-03-07 20:12:39 【问题描述】:我需要仅使用 CGAffineTransform 在 UIImageView 中使用 contentMode UIViewContentModeTopLeft 居中和缩放 UIImage。我不能使用 contentMode UIViewContentModeCenter 因为我需要完整的 CGAffineTransform 信息。
到目前为止,我正在使用类似的东西,其中 _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 的情况下做到这一点吗?
【问题讨论】:
【参考方案1】:试试这个:
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];
【讨论】:
您也可以尝试使用 CALayer anchorPoint。以上是关于如何在 UIImageView 中居中缩放(旋转)UIImage的主要内容,如果未能解决你的问题,请参考以下文章
如何以全分辨率从 UIImageView 获取旋转、缩放和平移的图像?
在具有较大 contentSize 的 UIScrollView 中居中 UIImageView