iOS - Scrollview 屏幕截图显示灰色部分
Posted
技术标签:
【中文标题】iOS - Scrollview 屏幕截图显示灰色部分【英文标题】:iOS - Scrollview screenshot is showing grey parts 【发布时间】:2017-08-31 11:32:29 【问题描述】:我有以下代码:
func takeScrollScreenshot() -> UIImage?
let scrollview: UIScrollView = self as! UIScrollView
UIGraphicsBeginImageContext(scrollview.contentSize)
let savedContentOffset = scrollview.contentOffset
let savedFrame = scrollview.frame
scrollview.contentOffset = CGPoint.zero;
scrollview.frame = CGRect(x: CGFloat(0),
y: CGFloat(0),
width: scrollview.contentSize.width,
height: scrollview.contentSize.height);
scrollview.layer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext();
scrollview.contentOffset = savedContentOffset
scrollview.frame = savedFrame
UIGraphicsEndImageContext()
return image
层次结构是这样的:View -> ScrollView -> View --> 其余视图
scrollview截图,问题是为什么底部没有上色。
内部视图的屏幕截图。
应该是什么样子
【问题讨论】:
您的所有视图是滚动视图的子视图,还是您拥有包含所有视图的容器视图? 是这样的:View -> ScrollView -> View --> 剩余的视图 然后尝试截取 View 的屏幕截图(scrollview 的子视图)并检查 我会尝试,但奇怪的是相同的功能只是在这个屏幕上失败 是的! .你的代码没有问题。即使为我工作,这也是我告诉你使用 View 的原因 【参考方案1】:我找到了解决方案。
我只需要添加行drawHierarchy(in: self.bounds, afterScreenUpdates: true)
func takeScrollScreenshot() -> UIImage?
let scrollview: UIScrollView = self as! UIScrollView
UIGraphicsBeginImageContext(scrollview.contentSize)
let savedContentOffset = scrollview.contentOffset
let savedFrame = scrollview.frame
scrollview.contentOffset = CGPoint.zero;
scrollview.frame = CGRect(x: CGFloat(0),
y: CGFloat(0),
width: scrollview.contentSize.width,
height: scrollview.contentSize.height);
scrollview.layer.render(in: UIGraphicsGetCurrentContext()!)
//I forget add this line.
drawHierarchy(in: self.bounds, afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext();
scrollview.contentOffset = savedContentOffset
scrollview.frame = savedFrame
UIGraphicsEndImageContext()
return image
【讨论】:
删除scrollview.layer.render
后仅 drawHierarchy(in: self.bounds, afterScreenUpdates: true)
工作?
我必须添加它。以上是关于iOS - Scrollview 屏幕截图显示灰色部分的主要内容,如果未能解决你的问题,请参考以下文章
iOS SwiftUI:ScrollView 忽略顶部安全区域
iOS 10上的ScrollView“错误”,swift 4 [重复]