UIImageView内の大きなトリミングされた画像の画像座標を決定する方法は?
-
06-07-2019 - |
質問
iPhone SDKに関して:
512 x 512ピクセルの.png画像があり、200 x 200ピクセルのUIImageViewをトリミング(ネイティブ解像度、ズーム、フィット、回転なし)で表示したい。 UIImageView内に表示される画像の座標を決定する方法はありますか?
たとえば、画像がUIImageViewの正確な中心にある場合、画像の座標がUIImageViewの(0,0)および(200,200)ポイントにあることを知りたいです。これは(156,156)および( 356,356)、表示されている画像に対してそれぞれ。
「パン」を実装する予定です。および「ズーム」ある時点で機能しますが、最初にこの問題に対処する方法を知りたいです。 UIImageViewクラス参照は役に立たなかったようです... UIViewの使用を避けたいと思っていましたが、それが必要な場合はそのルートに進みます。
ありがとう!
解決 2
ご協力ありがとうございます。 UIScrollViewを実装した後、パン/ズーム機能の作業が簡単になりました。 UIScrollViewを実装すると、 myScrollView.bounds.origin.x
および myScrollView.bounds.origin.y
の値で必要な座標を決定できます。ズームにはまだ計算が必要です-前述のとおりですが、私は現在正しい軌道に乗っています。
UIScrollViewの作成に使用したコードは次のとおりです(ネットおよびこのサイトで利用可能な複数のソースに基づいています-Appleの ScrollViewSuite は特に役立ちました。私のプログラムの(void)viewDidLoad
セクションで使用したコードを次に示します。 :
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
[self setMyImage:tempImageView]; //myImage is of type UIImageView
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
[tempImageView release];
myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 10.0;
myScrollView.minimumZoomScale = 0.15;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;
[myScrollView addSubview:myImage];
他のヒント
UIImageViewリファレンスから見たものについては正しいです-UIImageViewのみを使用して簡単に行う方法はありません。 UIImageViewのcontentModeなどを考慮するか、単一のUIViewContentModeの位置のみを計算するように制限する必要があります。
ただし、最終的にパンとズームを実装するようになると、UIScrollViewのサブビューとしてUIImageViewでUIScrollViewを使用することになります。その時点で、最初にUIImageViewのサイズを表示する画像のサイズに合わせて調整するのが最も賢明です(動的な場合もあります)。その後、画像がどこにあるかを判断するには、 view がどこにあるのかを判断します。