我試圖實現一個圖像視圖,該圖像視圖可以放大並且還有文字滾動到頂部。在我的視圖控制器中,我有一個包含圖像視圖的滾動視圖,並設置爲放大而沒有問題。只傳遞一些觸摸事件從一個視圖到另一個視圖
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)
}
}
現在我想將另一個滾動視圖的頂部,這樣的文字標籤可以,如果一拖再拖滾動,但圖像仍然可以捏和縮放當它被觸及。我將另一個滾動視圖放在圖像頂部(不在裏面),然後在內部放置一個內容視圖和UILabel
,正如我在IB中設置滾動視圖時通常所做的那樣。
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
}
這傳遞觸摸到下面的滾動型:當然卷軸但是圖像不會捏和縮放,除非我兩個子類的內容視圖頂部滾動視圖與文本。但是現在我無法滾動文本!有沒有什麼辦法可以設置這個,所以測試的UILabel
沒有通過觸摸,可以滾動,但外部通過並允許圖像縮放?任何指針都會非常感謝!
我使用內置縮放圖像的第一個滾動視圖。對於我想要滾動的文本,圖像頂部有第二個滾動視圖。我想傳遞觸摸,以便縮放下方的滾動視圖,但在觸摸文本時不會傳遞它們,因此文本可以滾動。 – Kex