Swift.為ImageView添加點(diǎn)擊放大效果

效果圖

實(shí)現(xiàn)效果:

通過(guò)拓展為ImageView添加點(diǎn)擊放大預(yù)覽展示,點(diǎn)擊預(yù)覽復(fù)原效果。

完整代碼

class EWImageAmplification: NSObject {
    static let shared = EWImageAmplification()

    /// 點(diǎn)擊放大方法
    ///
    /// - Parameters:
    ///   - currentImageView: 要放大的imageView
    ///   - alpha: 背景透明度(0-1)
    func scanBigImageWithImageView(currentImageView: UIImageView, alpha: CGFloat) {
        let image = currentImageView.image
        /// 獲取keyWindow
        let window = UIApplication.shared.keyWindow
        let backGroundView = UIView(frame: CGRect(x: 0, y: 0, width: EWidth, height: EHeight))
        /// 記錄imageView初始frame,保證復(fù)原
        oldFrame = currentImageView.convert(currentImageView.bounds, to: window)
        let imageView = UIImageView(frame: oldFrame)
        backGroundView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: alpha)
        backGroundView.alpha = 0

        imageView.image = image
        imageView.contentMode = .scaleAspectFit
        backGroundView.addSubview(imageView)
        backGroundView.isUserInteractionEnabled = true
        window?.addSubview(backGroundView)
        /// 為背景View添加手勢(shì)方法进鸠,實(shí)現(xiàn)點(diǎn)擊復(fù)原
        let tap: EWTap = EWTap(target: self, action: #selector(tapOnBackView(_:)))
        tap.backView = backGroundView
        tap.imageView = imageView
        backGroundView.addGestureRecognizer(tap)
        /// 實(shí)現(xiàn)動(dòng)畫(huà)效果
        UIView.animate(withDuration: 0.4) {
            let imageY: CGFloat = (EHeight - (image?.size.height)! * EWidth / (image?.size.width)!) * 0.5
            let height = (image?.size.height)! * EWidth / (image?.size.width)!
            imageView.frame = CGRect(x: 0, y: imageY, width: EWidth, height: height)
            backGroundView.alpha = 1
        }
    }
    
    /// 點(diǎn)擊背景手勢(shì)方法
    ///
    /// - Parameter sender: 手勢(shì)
    @objc private func tapOnBackView(_ sender: EWTap) {
        UIView.animate(withDuration: 0.4, animations: {
            sender.imageView?.frame = oldFrame
            sender.backView?.alpha = 0
        }, completion: { (_) in
            sender.backView?.removeFromSuperview()
        })
    }
}
/// 自定義手勢(shì)類(lèi),實(shí)現(xiàn)手勢(shì)方法傳參
class EWTap: UITapGestureRecognizer {
    var backView: UIView?
    var imageView: UIImageView?
    override init(target: Any?, action: Selector?) {
        super.init(target: target, action: action)
    }
}

使用方法示例:

將EWImageAmplification文件拖入項(xiàng)目,調(diào)用時(shí):

   /// 為imageView添加手勢(shì)方法
   let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapOnImageView))
   imageView.addGestureRecognizer(tap)
  
  @objc private func tapOnImageView() {
        EWImageAmplification.shared.scanBigImageWithImageView(currentImageView: imageView, alpha: 1)
    }

demo地址: EWImageTapBig

有問(wèn)題歡迎探討.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市杭棵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氛赐,老刑警劉巖魂爪,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異艰管,居然都是意外死亡滓侍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)牲芋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)撩笆,“玉大人,你說(shuō)我怎么就攤上這事缸浦∠Τ澹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵裂逐,是天一觀的道長(zhǎng)歹鱼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)卜高,這世上最難降的妖魔是什么弥姻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮掺涛,結(jié)果婚禮上蚁阳,老公的妹妹穿的比我還像新娘。我一直安慰自己鸽照,他們只是感情好螺捐,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著矮燎,像睡著了一般定血。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诞外,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天澜沟,我揣著相機(jī)與錄音,去河邊找鬼峡谊。 笑死茫虽,一個(gè)胖子當(dāng)著我的面吹牛刊苍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播濒析,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼正什,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了号杏?” 一聲冷哼從身側(cè)響起婴氮,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盾致,沒(méi)想到半個(gè)月后主经,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庭惜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年罩驻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片护赊。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惠遏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出百揭,到底是詐尸還是另有隱情爽哎,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布器一,位于F島的核電站课锌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祈秕。R本人自食惡果不足惜渺贤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望请毛。 院中可真熱鬧志鞍,春花似錦、人聲如沸方仿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仙蚜。三九已至此洲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間委粉,已是汗流浹背呜师。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贾节,地道東北人汁汗。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓衷畦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親知牌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祈争,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,674評(píng)論 0 15
  • 文、圖/卜白 對(duì)于不吸毒不迷戀煙草酒精也很少進(jìn)行中藥理療的人送爸,僅僅通過(guò)日常的餐點(diǎn)飲食與植物打交道铛嘱,是很難體會(huì)到她們...
    卜白閱讀 1,186評(píng)論 4 3
  • 回憶是青春特有浪花,這篇文章書(shū)寫(xiě)以及出現(xiàn)是受到一個(gè)即將畢業(yè)的學(xué)妹影響球匕,幾張圖帶回記憶纹磺。本來(lái)是要寫(xiě)學(xué)校的,是要寫(xiě)這學(xué)...
    唐伯虎9527閱讀 759評(píng)論 0 1
  • 下班路上亮曹,天還亮橄杨,月亮已在高空 在每一個(gè)白天等待黑夜的到來(lái) 文/鄒小星 ...
    木堇206閱讀 438評(píng)論 0 3