変換をそれ自体に適用するために使用しているいくつかのジェスチャ認識機能を含む UIImageView のサブクラスがあります。パンまたはスケーリングに問題はありませんが、デバイス自体が回転すると、回転した変換が問題を引き起こします。基本的に、デバイスが回転するたびに、画像をスケーリングする効果があります...
すべての回転が回転した変換で問題を引き起こす可能性があることは理にかなっていると思いますが、この種の動作を回避する方法を知っている人はいますか? できれば、UIImageView サブクラス内で実装できるものはありますか? 自動サイズ変更するには他の兄弟ビューが必要なので、親ビューで「サブビューの自動サイズ変更」を無効にすることはできません。
役立つ場合は、回転した変換を作成するコードを次に示します。
- (void)setUpRotation
{
UIRotationGestureRecognizer *newRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationGesture)];
newRecognizer.delegate = self;
self.rotationRecognizer = newRecognizer;
[self addGestureRecognizer:self.rotationRecognizer];
[newRecognizer release];
self.userInteractionEnabled = YES;
}
- (void)handleRotationGesture
{
// Initial state
if(self.rotationRecognizer.state == UIGestureRecognizerStateEnded)
{
lastRotation = 0.0;
return;
}
CGFloat rotation = 0.0 - (lastRotation - self.rotationRecognizer.rotation);
CGAffineTransform currentTransform = self.transform;
self.transform = CGAffineTransformRotate(currentTransform,rotation);
lastRotation = self.rotationRecognizer.rotation;
}
これはiOS 5.0にあります。