第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

獲取UIScrollView的屏幕截圖,包括屏幕外部分

獲取UIScrollView的屏幕截圖,包括屏幕外部分

德瑪西亞99 2019-07-19 16:07:28
獲取UIScrollView的屏幕截圖,包括屏幕外部分我有一個(gè)UIScrollViewDeendent,它實(shí)現(xiàn)了如下所示的獲取Screenshot方法:-(void)takeScreenshot {     CGRect contextRect  = CGRectMake(0, 0, 768, 1004);   UIGraphicsBeginImageContext(contextRect.size);       [self.layer renderInContext:UIGraphicsGetCurrentContext()];   UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();   UIGraphicsEndImageContext();   // do something with the viewImage here.}這基本上移動(dòng)到滾動(dòng)視圖的頂部,并獲取可見(jiàn)區(qū)域的屏幕截圖。當(dāng)iPad是面向人像的時(shí)候,它工作得很好,但是當(dāng)它在風(fēng)景中的時(shí)候,圖像的底部被切斷了(因?yàn)榭梢?jiàn)區(qū)域的高度只有748,而不是1004)。是否可以獲得UIScrollView包括沒(méi)有出現(xiàn)在屏幕上的區(qū)域?還是我需要向下滾動(dòng),拍第二張照片,把它們縫在一起?
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

我必須在iOS 8和更高版本上實(shí)現(xiàn)這一點(diǎn),并在iPhone上進(jìn)行測(cè)試。接受的答案只是呈現(xiàn)滾動(dòng)視圖的可見(jiàn)部分,而圖像的其余部分仍然是空白的。

我試著用drawViewHierarchyInRect-運(yùn)氣不好取決于afterScreenUpdates賦存truefalse我被拉伸了一部分圖像或者只是部分內(nèi)容。

實(shí)現(xiàn)正確的快照的唯一方法是UIScrollView其全部?jī)?nèi)容是將其添加到另一個(gè)臨時(shí)視圖中,然后呈現(xiàn)它。

示例代碼如下(scrollview是我的VC中的插座)

func?getImageOfScrollView()?->?UIImage?{
????var?image?=?UIImage()

????UIGraphicsBeginImageContextWithOptions(self.scrollView.contentSize,?false,?UIScreen.mainScreen().scale)

????//?save?initial?values
????let?savedContentOffset?=?self.scrollView.contentOffset????let?savedFrame?=?self.scrollView.frame????let?savedBackgroundColor?=?self.scrollView.backgroundColor????//?reset?offset?to?top?left?point
????self.scrollView.contentOffset?=?CGPointZero
????//?set?frame?to?content?size
????self.scrollView.frame?=?CGRectMake(0,?0,?self.scrollView.contentSize.width,?self.scrollView.contentSize.height)
????//?remove?background
????self.scrollView.backgroundColor?=?UIColor.clearColor()

????//?make?temp?view?with?scroll?view?content?size
????//?a?workaround?for?issue?when?image?on?ipad?was?drawn?incorrectly
????let?tempView?=?UIView(frame:?CGRectMake(0,?0,?self.scrollView.contentSize.width,?self.scrollView.contentSize.height))

????//?save?superview
????let?tempSuperView?=?self.scrollView.superview????//?remove?scrollView?from?old?superview
????self.scrollView.removeFromSuperview()
????//?and?add?to?tempView
????tempView.addSubview(self.scrollView)

????//?render?view
????//?drawViewHierarchyInRect?not?working?correctly
????tempView.layer.renderInContext(UIGraphicsGetCurrentContext())
????//?and?get?image
????image?=?UIGraphicsGetImageFromCurrentImageContext()

????//?and?return?everything?back
????tempView.subviews[0].removeFromSuperview()
????tempSuperView?.addSubview(self.scrollView)

????//?restore?saved?settings
????self.scrollView.contentOffset?=?savedContentOffset????self.scrollView.frame?=?savedFrame????self.scrollView.backgroundColor?=?savedBackgroundColor????UIGraphicsEndImageContext()

????return?image}


查看完整回答
反對(duì) 回復(fù) 2019-07-19
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

UIView擴(kuò)展與處理UIScrollView的工作示例:

extension UIView {
    func screenshot() -> UIImage {

            if(self is UIScrollView) {
                let scrollView = self as! UIScrollView

                let savedContentOffset = scrollView.contentOffset                let savedFrame = scrollView.frame                UIGraphicsBeginImageContext(scrollView.contentSize)
                scrollView.contentOffset = .zero                self.frame = CGRect(x: 0, y: 0, width: scrollView.contentSize.width, height: scrollView.contentSize.height)
                self.layer.render(in: UIGraphicsGetCurrentContext()!)
                let image = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext();

                scrollView.contentOffset = savedContentOffset
                scrollView.frame = savedFrame                return image!
            }

            UIGraphicsBeginImageContext(self.bounds.size)
            self.layer.render(in: UIGraphicsGetCurrentContext()!)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            return image!

        }}


查看完整回答
反對(duì) 回復(fù) 2019-07-19
  • 3 回答
  • 0 關(guān)注
  • 1505 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)