为什么我无法在我的ios swift应用程序中设置UIScrollView的默认缩放?

时间:2016-03-19 12:11:51

标签: ios swift uiscrollview uipinchgesturerecognizer

我有一个带有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}})错误或我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用原生UIScrollView来完成您的成就。您不需要使用第三方SDK。

如果您选择使用原生ScrollViewDelegate构建应用,则可以将此scrollView 委托方法用于设置缩放级别。

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
        scrollView.minimumZoomScale = 1
        scrollView.minimumZoomScale = 10
        return self.imageView // Your Image View.
    }