缩放一个迅速的视图控制器



我正在创建一个iOS应用程序(Swift),其中我在视图控制器中具有多个标签。我不使用任何scrollview。我需要在捏手势上缩小视图控制器。我知道我已经找到了具有滚动视图的解决方案,但是我不想在视图控制器中实现ScrollView。任何帮助,将不胜感激!谢谢。

更新:

我已经在View Controller中实现了一个ScrollView。我在scrollview中添加了一个视图,并且该视图包含一些标签,但是我现在面临的问题是:

  1. 变焦并不保持静态。那就是我一旦释放手指,滚动浏览会自动缩放到原始。

  2. 当视图控制器处于原始状态时,应用程序崩溃。

这是我的代码:

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet var viewThis: UIView!
override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.delegate = self
    //let gesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchAction(sender:)))
    //self.view.addGestureRecognizer(gesture)
    // Do any additional setup after loading the view.
    let scrollViewFrame = scrollView.frame
    let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
    let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
    let minScale = min(scaleWidth, scaleHeight);
    scrollView.minimumZoomScale = minScale
    scrollView.maximumZoomScale = 1.0
    scrollView.zoomScale = minScale;
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return viewThis
}

感谢@yunchen为我提供了帮助。他给我一个想法,该代码发生了什么。我面临的问题是,在放大时,我的应用程序曾经崩溃,因为与视图宽度和高度相比,它已经超出了极限。如果有人在以后发现相同的问题,我已经更新了答案。

步骤1:在View Controller中添加ScrollView。

步骤2:在scrollview上添加视图。

步骤3:在此视图上从对象库中添加所有项目/对象。

步骤4:绑定卷轴并在代码中的视图控制器上绑定。还要添加一个uiscrollviewdelegate。

步骤5:按照下面完成。

这是代码:

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet var viewThis: UIView!
override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.delegate = self
    scrollView.minimumZoomScale = 1.0;
    scrollView.maximumZoomScale = 3.0
    scrollView.zoomScale = 1.0
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return viewThis
}

再次感谢@yunchen帮助我!

uiview的 transform属性可以使视图及其子视图较小或更大,例如缩放效果。示例与UipinchgesturerEcognizer:

class ExampleViewController: UIViewController {
    var previousScale:CGFloat = 1.0
    override func viewDidLoad() {
        super.viewDidLoad()
        let gesture = UIPinchGestureRecognizer(target: self, action: #selector(pinchAction(sender:)))
        self.view.addGestureRecognizer(gesture)
    }
    func pinchAction(sender:UIPinchGestureRecognizer) {
        let scale:CGFloat = previousScale * sender.scale
        self.view.transform = CGAffineTransform(scaleX: scale, y: scale);
        previousScale = sender.scale
    }
}

也许您需要考虑在缩放后调整视图位置,请使用CGAffineTransform(translationX: , y: )来做到这一点。

仍然同意UISCROLLVIEW是进行缩放的最简单方法。

相关内容

  • 没有找到相关文章

最新更新