pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

UIImageView 在 UIScrollView 中縮放和捏合

UIImageView zoom and pinch in UIScrollView(UIImageView 在 UIScrollView 中縮放和捏合)
本文介紹了UIImageView 在 UIScrollView 中縮放和捏合的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我嘗試了許多不同的方法來實現擴展圖像和捏拉縮放.我找到了有關如何使用項目中保存的圖像執行此操作的教程,但是我正在從 Firebase 檢索我的圖像.我希望一張圖片占據 ProfileViewController 屏幕的一半左右,而其他圖片能夠擴展整頁并且能夠縮放.我現在擁有的代碼可以做到這一點,但是縮放和位置不干凈或易于使用.

I have tried many different ways of implementing expand image and pinch to zoom. I have found tutorials on how to do this with images saved in my project however I am retrieving my images from Firebase. I would like one image to take about half the ProfileViewController screen and the other pictures to be able to be expanded full page and also have the ability to zoom. My code I have for it now does this however the zooming and the position is not clean or easy to use.

var newImageView: UIImageView!



@IBAction func imageTapped(_ sender: UITapGestureRecognizer)  {
    let imageView = sender.view as! UIImageView

    let scrollView = UIScrollView(frame: self.view.frame)


    newImageView = UIImageView(image: imageView.image)
    newImageView.frame = self.view.frame
    newImageView.backgroundColor = .black
    newImageView.contentMode = .top
    newImageView.isUserInteractionEnabled = true


    let tap = UITapGestureRecognizer(target: self, action: #selector(dismissFullscreenImage))
    scrollView.addGestureRecognizer(tap)


    scrollView.delegate = self
    scrollView.minimumZoomScale = 1.0
    scrollView.maximumZoomScale = 3.0

    scrollView.addSubview(newImageView)

    self.view.addSubview(scrollView)
}

func viewForZooming(in scrollView: UIScrollView) -> UIView?
{
    return newImageView;
}

func dismissFullscreenImage(_ sender: UITapGestureRecognizer) {
    sender.view?.removeFromSuperview()
}

推薦答案

這是我正在以編程方式創建滾動視圖和圖像視圖,這里 img 是我正在選擇的 PHAsset圖片來自畫廊.

Here is I am creating scrollview and imageview programatically and here img is a PHAsset that I am selecting image from gallery.

我在做什么,選擇一個圖像并移動到其他視圖控制器,然后我根據我的 imageview 調整該圖像的大小因此圖像在縮放后不會模糊.

最小縮放受限于 imageview,最大縮放為 4.0.

Here what I am doing, select an image and move to other view controller and I resize that image according to my imageview So image is not blurry after zooming it.

Minimum zooming is imageview bound and maxmimum zooming is 4.0.

func singleVC1()  {
        let v = UIView(frame: CGRect(x: 40, y: 50, width: self.view.frame.size.width - 80, height: view.frame.size.height - 200))
        let view1 = UIView(frame: CGRect(x: 0, y: 0, width: v.frame.size.width, height: v.frame.size.height/2 - 1))
        let scroll1 = UIScrollView.init(frame: view1.bounds)
        let imgview = UIImageView.init(frame: (CGRect)(origin: CGPoint.zero, size: self.returnAspectSize(targetWidth: view.frame.size.width, img: img)))
        self.setZoomScale(scrollview: scroll1, imageview: imgview)
        imgview.image = self.getUIImage(asset: img)
        scroll1.maximumZoomScale = 4.0;
        scroll1.delegate = self;
        scroll1.bounces = false
        scroll1.contentSize =  imgview.frame.size
        scroll1.addSubview(imgview)
        view1.layer.borderColor = UIColor.red.cgColor
        view1.layer.borderWidth = 5.0
        view1.addSubview(scroll1)
        v.addSubview(view1)

        let view2 = UIView(frame: CGRect(x: 0, y: v.frame.size.height/2+1, width: v.frame.size.width, height: v.frame.size.height/2 - 1))
        let scroll2 = UIScrollView.init(frame: view2.bounds)
        let imgview1 = UIImageView.init(frame: (CGRect)(origin: CGPoint.zero, size: self.returnAspectSize(targetWidth: view.frame.size.width, img: img)))
        imgview1.image = self.getUIImage(asset: img)
        self.setZoomScale(scrollview: scroll2, imageview: imgview1)
        scroll2.bounces = false

        scroll2.maximumZoomScale = 4.0;
        scroll2.delegate = self;
        view2.layer.borderColor = UIColor.red.cgColor
        view2.layer.borderWidth = 5.0
        scroll2.contentSize = imgview1.frame.size
        scroll2.addSubview(imgview1)
        view2.addSubview(scroll2)
        v.addSubview(view2)
        self.view.addSubview(v)
    }
func setZoomScale(scrollview : UIScrollView, imageview : UIImageView) {
        var minZoom = min(self.view.bounds.size.width / imageview.bounds.size.width, self.view.bounds.size.height / imageview.bounds.size.height);

        if (minZoom > 1.0) {
            minZoom = 1.0;
        }
        scrollview.minimumZoomScale = minZoom;
        scrollview.zoomScale = minZoom;
    }
    func returnAspectSize(targetWidth : CGFloat, img : PHAsset) -> CGSize {
        let img1 = self.getUIImage(asset: self.img)
        let targetwidth = targetWidth
        let scalefactor = (CGFloat)(targetwidth) / (CGFloat)((img1?.size.width)!)
        let targetheight = (img1?.size.height)! * scalefactor
        let targesize = CGSize(width: (CGFloat)(targetwidth), height: targetheight)
        return targesize
    }

試試這個.我相信這會對你有所幫助.

Try this. I am sure this will help you.

這篇關于UIImageView 在 UIScrollView 中縮放和捏合的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

how to set scrollview content size in swift 3.0(如何在 swift 3.0 中設置滾動視圖內容大小)
Stop a UITableView from automatically scrolling(阻止 UITableView 自動滾動)
iOS UIScrollView Lazy Loading(iOS UIScrollView 延遲加載)
using iOS 6.0 SDK and building for iOS 5 Target causes UIScrollView setMinimumZoomScale to fail when running on iOS 5 simulator(在 iOS 5 模擬器上運行時,使用 iOS 6.0 SDK 并為 iOS 5 Target 構建會導致 UIScrollView setMinimumZ
Create partial-screen UIPageViewController programmatically(以編程方式創建部分屏幕 UIPageViewController)
how to make an ImageView zoomable with or without ScrollView.?(如何使用或不使用 ScrollView 使 ImageView 可縮放?)
主站蜘蛛池模板: 昊宇水工|河北昊宇水工机械工程有限公司| 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 电动葫芦-河北悍象起重机械有限公司 | 保温杯,儿童婴童奶瓶,运动水壶「广告礼品杯定制厂家」超朗保温杯壶 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 通辽信息港 - 免费发布房产、招聘、求职、二手、商铺等信息 www.tlxxg.net | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 洗地机-全自动/手推式洗地机-扫地车厂家_扬子清洁设备 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器 | 日本东丽膜_反渗透膜_RO膜价格_超滤膜_纳滤膜-北京东丽阳光官网 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 湖南自考_湖南自学考试| 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 轴承振动测量仪电箱-轴承测振动仪器-测试仪厂家-杭州居易电气 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 上海APP开发-APP制作-APP定制开发-上海APP开发制作公司-咏熠科技 | H型钢切割机,相贯线切割机,数控钻床,数控平面钻,钢结构设备,槽钢切割机,角钢切割机,翻转机,拼焊矫一体机 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 磁粉制动器|张力控制器|气胀轴|伺服纠偏控制器整套厂家--台灵机电官网 | 苏州教学设备-化工教学设备-环境工程教学模型|同科教仪 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 | 衬四氟_衬氟储罐_四氟储罐-无锡市氟瑞特防腐科技有限公司 | 传动滚筒,改向滚筒-淄博建凯机械科技有限公司 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 空气能暖气片,暖气片厂家,山东暖气片,临沂暖气片-临沂永超暖通设备有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | 合肥抖音SEO网站优化-网站建设-网络推广营销公司-百度爱采购-安徽企匠科技 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 闪电优家-卫生间防水补漏_酒店漏水渗水维修_防水堵漏公司 | 自动配料系统_称重配料控制系统厂家 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 |