ios - Cannot Zoom UIImageView -
i new swift.
i doing exercise app development book. trying create uiimageview , put image in it, can not zoom image in. there wrong in code, don't know going on.
import uikit class viewcontroller: uiviewcontroller, uiscrollviewdelegate { @iboutlet weak var image: uiimageview! @iboutlet weak var scroll: uiscrollview! override func viewdidload() { super.viewdidload() scroll.delegate = viewcontroller() updatezoomfor(size:view.bounds.size) // additional setup after loading view, typically nib. } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } private func viewforzooming(in scrollview: uiscrollview) -> uiimageview{ return image } func updatezoomfor(size:cgsize){ let widthscale = size.width / image.bounds.width let heightscale = size.height / image.bounds.height let scale = min(widthscale, heightscale) scroll.minimumzoomscale = scale } }
first, set scroll.delegate = self suggested 3stud1ant3.
second, need match definition of theuiscrollviewdelegate method:
func viewforzooming(in scrollview: uiscrollview) -> uiview? { return image } make sure set zoom scale in updatezoomfor well: scroll.zoomscale = scale.
also need implement this:
override func viewwilllayoutsubviews() { super.viewwilllayoutsubviews() updatezoomfor(size: view.bounds.size) } func scrollviewdidzoom(_ scrollview: uiscrollview) { updateconstraintsforsize(view.bounds.size) } fileprivate func updateconstraintsforsize(_ size: cgsize) { let yoffset = max(0, (size.height - imageview.frame.height) / 2) imageviewtopconstraint.constant = yoffset imageviewbottomconstraint.constant = yoffset let xoffset = max(0, (size.width - imageview.frame.width) / 2) imageviewleadingconstraint.constant = xoffset imageviewtrailingconstraint.constant = xoffset view.layoutifneeded() }
Comments
Post a Comment