我有一个带有UIScrollView
的UIViewController。我想在我的应用程序中有如下行为:
1)用户打开应用程序,看到正常大小的照片(UIScrollView的默认大小)
2)当用户单击照片时,它会进入全屏状态,用户也可以放大并移动照片
3)当用户在全屏模式下再次点击照片时,它会从1号点收缩到原始尺寸,并且禁用缩放和移动。
为了处理滚动和移动照片,我决定使用这个插件:https://github.com/huynguyencong/ImageScrollView。
我的代码如下:
@IBOutlet weak var requestPhoto: ImageScrollView!
var originalPhotoSize :CGRect?
var isPhotoOnFullScreen: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tapHandler:")
self.requestPhoto.addGestureRecognizer(tapGestureRecognizer)
self.requestPhoto.userInteractionEnabled = true
originalPhotoSize = requestPhoto.frame
}
override func viewDidAppear(animated: Bool) {
super.viewWillAppear(animated)
requestPhoto.scrollEnabled = false
requestPhoto.pinchGestureRecognizer?.enabled = false
requestPhoto.panGestureRecognizer.enabled = false
requestPhoto.zoomScale = 1
}
func tapHandler(sender: UITapGestureRecognizer) {
if sender.state == .Ended {
if(isPhotoOnFullScreen == true){
self.requestPhoto.frame = originalPhotoSize!
self.requestPhoto.zoomScale = 1
self.requestPhoto.pinchGestureRecognizer?.enabled = false
self.requestPhoto.scrollEnabled = false
isPhotoOnFullScreen = false
}else{
self.requestPhoto.frame = self.view.frame
self.requestPhoto.pinchGestureRecognizer?.enabled = true
self.requestPhoto.scrollEnabled = true
isPhotoOnFullScreen = true
}
}
}
我的确切问题是:
1)当用户打开应用程序时,他可以捏缩小照片(即使我在requestPhoto.pinchGestureRecognizer?.enabled = false
设置了viewDidLoad
)
2)当用户点击照片时,它会全屏打开。这没关系,但当他捏缩放并在某个时刻点击照片时,它会回到小尺寸,但缩放级别没有设置为默认值(即使我正在设置self.requestPhoto.zoomScale = 1
)
你能帮我解决上面的这两个问题吗?
====编辑
谈论问题没有。 1 - 当用户打开应用程序时,他可以捏合以缩放照片,但是当他在全屏幕上打开图像并返回到正常模式时 - 然后禁用缩放。为什么从一开始就没有禁用它?
谈论问题没有。 2 - 不知何故,这一行self.requestPhoto.zoomScale = 1
无效,当我在设置为1后立即打印self.requestPhoto.zoomScale
的值时,它仍然有一些不同的值,我不确定它是否是这个插件({ {3}})错误或我做错了什么?
答案 0 :(得分:0)
您可以使用原生UIScrollView
来完成您的成就。您不需要使用第三方SDK。
如果您选择使用原生ScrollViewDelegate
构建应用,则可以将此scrollView
委托方法用于设置缩放级别。
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
scrollView.minimumZoomScale = 1
scrollView.minimumZoomScale = 10
return self.imageView // Your Image View.
}