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