放大视图时的块尺寸图像

时间:2018-11-20 14:05:38

标签: ios swift image size

我有一个视图,并且在一个可用作按钮的图像中。我想知道是否有一种方法可以锁定按钮的大小,以便在放大时视图保持较小,并且不会随视图放大。

one

two

2 个答案:

答案 0 :(得分:0)

我认为一开始很难管理。但是最后,如果将imageView放在UIScrollView中,这并不难实现。

这个想法是在缩放过程中将buttonView移到imageView之外,当缩放结束时,将其放回imageView以假装什么也没有发生。我知道它在编程中过于冗长,但实际上它完全适合您的情况。

    var  originalCenter : CGPoint! // The center of ButtonView in imageView.


   //All functions are from the  UIScrollViewDelegate.

            func viewForZooming(in scrollView: UIScrollView) -> UIView?{
             originalCenter  =  buttonView.center // remember the original position.
            return imageView
        }

            func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
                buttonView.frame =  imageView.convert(buttonView.frame, to: scrollView)
                scrollView.addSubview(buttonView)//add to superView of imageImage.
            }

            func scrollViewDidZoom(_ scrollView: UIScrollView){
                buttonView.center = imageView.convert(originalCenter, to: scrollView)  //During Zooming, update the buttonView in ScrollView.
            }

            func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat){
                buttonView.frame = imageView.convert(buttonView.frame, from: scrollView)
                imageView.addSubview(buttonView) //put it back.
            }

我知道最好使用参数来控制这种操作。但是我还没有根据公共API找到一个。也许有更好的方法,希望这也是您的答案。

答案 1 :(得分:0)

因为您为superView调用了transform。它将使内部的所有子视图一起变换。

您需要重新制作视图:

SuperView:
- Content view (the image view)
- Border view
- Button close

要缩放图像时,只需重置超级视图框。

您找到了一个git SPUserResizableView