私はズームが可能で、テキストを上にスクロールできるイメージビューを実装しようとしています。私のビューコントローラでは、私は画像ビューを含むスクロールビューを持っており、問題なくズームするように設定されています。1つのビューから別のビューにいくつかのタッチイベントだけを渡す
class ViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var scrollView: UIScrollView!
//First try getting the image setup correctly
override func viewDidLoad() {
super.viewDidLoad()
setupImageView()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func setupImageView() {
scrollView.contentSize = imageView.bounds.size
scrollView.minimumZoomScale = 0.5
scrollView.maximumZoomScale = 2.0
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageView
}
func scrollViewDidZoom(scrollView: UIScrollView) {
let imageViewSize = imageView.frame.size
let scrollViewSize = scrollView.bounds.size
let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0
let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0
scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding)
}
}
は、今私は上のドラッグした場合は、テキストラベルをスクロールすることができますが、それは上のタッチしたときの画像がまだ挟まおよびズームすることができますので、上に別のスクロールビューを配置します。私は、IBのスクロールビューを設定するときに通常行うように、画像1の上に別のスクロールビューを配置し(内部ではなく)、コンテンツビューとUILabel
を配置しました。画像はピンチやズームではないだろうが、私はとコンテンツビューとトップscrollviewの両方をサブクラス化しない限り、コースのスクロールのテキストは:
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
for subview in subviews as [UIView] {
if !subview.hidden && subview.alpha > 0 && subview.userInteractionEnabled && subview.pointInside(convertPoint(point, toView: subview), withEvent: event) {
return true
}
}
return false
}
これは、以下のscrollviewにタッチを渡します。しかし、今私はテキストをスクロールすることはできません!これを設定する方法はありますか?UILabel
のテストではタッチが通過せず、スクロールできますが、外側は通過して画像を拡大できますか?これについての指針は本当に感謝しています!
を画像の最初のスクロールビューに組み込まれたズームを使用します。スクロールしたいテキストの画像の上に2番目のスクロールビューがあります。タッチを渡して、下のスクロールビューをズームできますが、テキストがタッチされたときにスクロールビューを渡すことはできないため、テキストをスクロールすることができます。 – Kex