現在写真イメージを
▷UIScrollView▷UIImageViewという階層の
UIImageView.imageに乗せ
拡大のイベントを、UIScrollViewDelegateである
viewForZoomingInScrollViewや
scrollViewDidEndZoomingで
取れるようにしました。
そして今その拡大したイメージをクロップしたいと思っていますが
その拡大時のrectの取り方がわかりません。
swift
1 2 3 if let cropRef = CGImageCreateWithImageInRect(image.CGImage!, self.cropRect!){ 4 let cropImage = UIImage(CGImage: cropRef) 5 } 6 7
のように
クロップしたいのですが。。。
swift
1 2func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) { 3 4 cropRect = CGRectMake(scrollView.contentOffset.x* scale,scrollView.contentOffset.y* scale,scrollView.bounds.size.width* scale,scrollView.bounds.size.height* scale) 5 } 6
では上手くとれなかったです。
追記:
ログを出してみると
▷▷▷拡大前
▷scrollView frame = (0 0; 328 328) contentOffset: {0, 0}; contentSize: {0, 0}
▷scrollView Bounds = (0.0, 0.0, 328.0, 328.0)
▷ImageView frame = (0 0; 383 383)
▷ImageView's image = {2448, 2448}
▷▷▷拡大後
▷scrollView frame = (0 0; 328 328) contentOffset: {107.5, 128.5}; contentSize: {597.26526, 597.26526}
▷scrollView Bounds is (107.5, 128.5, 328.0, 328.0)
▷ImageView is frame = (0 0; 597.265 597.265)
▷ImageView's image = {2448, 2448}
のようになっていて拡大時にはscrollViewのcontentOffsetとcontentSizeの変化に合わせてそのboundsとその下階層にあるImageViewのframeが変わっています。
その後imageのサイズに1/scaleを乗算したものが
取得したい拡大時のrect.sizeであることがわかりましたが
imageの内、見えている部分の座標が未だに正確に取得できないです
picture説明
黄色 imageView.imageのサイズ、
青 scrollViewのframe(見えている部分)
緑 CGRectMake(scrollView.contentOffset.x/ scale,scrollView.contentOffset.y/ scale,scrollView.frame.size.width/ scale,scrollView.frame.size.height/ scale)で取れているように見える矩形
今知りたいのは黄色のimageの中での青の矩形の座標です。
回答1件
あなたの回答
tips
プレビュー