Ios 在UIScrollview上缩放图像后,它会在图像区域外滚动
我正在尝试使用Ios 在UIScrollview上缩放图像后,它会在图像区域外滚动,ios,iphone,swift,uiscrollview,Ios,Iphone,Swift,Uiscrollview,我正在尝试使用UIScrollview实现图像缩放功能。我将图像保持在合适的位置。 图像位于UIScrollView中,并且给出的图像帧与UIScrollView类似 这是我的密码 class CroppingImageViewController: UIViewController, UIScrollViewDelegate{ var image:UIImage = UIImage() @IBOutlet var imageview:UIImageView!
UIScrollview
实现图像缩放功能。我将图像保持在合适的位置。图像位于
UIScrollView
中,并且给出的图像帧与UIScrollView
类似这是我的密码
class CroppingImageViewController: UIViewController, UIScrollViewDelegate{
var image:UIImage = UIImage()
@IBOutlet var imageview:UIImageView!
@IBOutlet var scrollview:UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
imageview.image = image
scrollview.contentSize = imageview.frame.size;
scrollview.minimumZoomScale = 1.0;
scrollview.maximumZoomScale = 4.0;
scrollview.setZoomScale(scrollview.minimumZoomScale, animated: true)
scrollview.delegate = self;
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return imageview
}
}
我的要求是,图像应该滚动到它的内容
self.automaticallyAdjustsScrollViewInsets=NO;
根据apple文档,AutomaticJustScrollViewInsets默认为YES
所以它试图控制你的滚动视图
将此添加到viewdidload方法中,然后重试。我搜索相同的内容已经有一段时间了。我确实喜欢这个。这对我来说很有效
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
imageView.image = image
imageView.contentMode = UIViewContentMode.center
imageView.frame = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)
ScrollView.contentSize = imageView.frame.size
let scrollViewFrame = ScrollView.frame
let scaleWidth = scrollViewFrame.size.width / ScrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/ScrollView.contentSize.height
let minScale = min(scaleHeight, scaleWidth)
ScrollView.minimumZoomScale = minScale
ScrollView.maximumZoomScale = 1
ScrollView.zoomScale = minScale
ScrollView.clipsToBounds = true
centerScrollViewContents()
picker.dismiss(animated: true, completion: nil)
}
func centerScrollViewContents(){
let boundsSize = ScrollView.bounds.size
var contentsFrame = imageView.frame
if contentsFrame.size.width < boundsSize.width{
contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2
}else{
contentsFrame.origin.x = 0
}
if contentsFrame.size.height < boundsSize.height{
contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2
}else{
contentsFrame.origin.y = 0
}
imageView.frame = contentsFrame
}
func-imagePickerController(picker:UIImagePickerController,didFinishPickingMediaWithInfo:[字符串:任意]){
将image=info[UIImagePickerControllerOriginalImage]设为!UIImage
imageView.image=image
imageView.contentMode=UIViewContentMode.center
imageView.frame=CGRect(x:0,y:0,宽度:image.size.width,高度:image.size.height)
ScrollView.contentSize=imageView.frame.size
让scrollViewFrame=ScrollView.frame
设scaleWidth=scrollViewFrame.size.width/ScrollView.contentSize.width
让scaleHeight=scrollViewFrame.size.height/ScrollView.contentSize.height
设最小刻度=最小(刻度高度,刻度宽度)
ScrollView.minimumZoomScale=minScale
ScrollView.maximumZoomScale=1
ScrollView.zoomScale=最小刻度
ScrollView.clipsToBounds=true
centerScrollViewContents()
picker.disclose(动画:true,完成:nil)
}
func centerScrollViewContents(){
让boundsSize=ScrollView.bounds.size
var contentsFrame=imageView.frame
如果contentsFrame.size.width
还是一样。不走运!!