0

CGAffineTransformのみを使用して、contentModeUIViewContentModeTopLeftを使用してUIImageViewのUIImageを中央揃えおよびスケーリングする必要があります。完全なCGAffineTransform情報が必要なため、contentModeUIViewContentModeCenterを使用できません。

これまでのところ、私はこのようなものを使用しています。ここで、_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を使用せずにこれを行う方法を知っている人はいますか?

4

1 に答える 1

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];
于 2013-03-07T20:45:31.713 に答える