为什么添加的子图层没有显示在屏幕截图中?

2024-02-12

我正在尝试找出 iPad 应用程序的某些 iOS 代码中的错误。在我们的一个视图中,我们添加了子图层以产生阴影并确保视图的底部具有圆角边缘。这是我们添加子层的代码:

    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
                                                   byRoundingCorners:(UIRectCornerBottomLeft|UIRectCornerBottomRight)
                                                         cornerRadii:CGSizeMake(12.0f, 12.0f)];

    // Create the shadow layer
    shadowLayer = [CAShapeLayer layer];
    [shadowLayer setFrame:self.bounds];
    [shadowLayer setMasksToBounds:NO];
    [shadowLayer setShadowPath:maskPath.CGPath];
    shadowLayer.shadowColor = [UIColor blackColor].CGColor;
    shadowLayer.shadowOffset = CGSizeMake(0.0f, 0.0f);
    shadowLayer.shadowOpacity = 0.5f;
    shadowLayer.shadowRadius = 6.0f;

    roundedLayer = [CALayer layer];
    [roundedLayer setFrame:self.bounds];
    [roundedLayer setBackgroundColor:[UIColor colorFromHex:@"#e4ecef"].CGColor];

    [self.layer insertSublayer:shadowLayer atIndex:0];

    // Add inner view (since we're rounding corners, parent view can't mask to bounds b/c of shadow - need extra view)
    maskLayer = [CAShapeLayer layer];
    maskLayer.frame = self.bounds;
    maskLayer.path = maskPath.CGPath;
    innerView = [[UIView alloc] initWithFrame:self.bounds];
    innerView.backgroundColor = [UIColor whiteColor];
    innerView.layer.mask = maskLayer;
    [self addSubview:innerView];

它在 iPad 的屏幕上显示良好,但我想以编程方式截取屏幕截图。我使用此方法向 UIView 添加了一个类别:

- (UIImage*)screenshot {
    UIGraphicsBeginImageContext(self.frame.size);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
    return viewImage;
}

当我查看所拍摄的屏幕截图时,它不再有圆角或视图后面的阴影。他们为什么不出现?


在这里找到了解释:CALayer渲染上下文 https://stackoverflow.com/questions/1740953/calayer-renderincontext

此外,使用 3D 变换的图层不会被渲染,也不会被渲染。 指定backgroundFilters、filters、compositingFilter 或的层 掩码值。

看起来有些子层无法由 renderInContext 处理,这就是为什么它们没有出现在我的屏幕截图中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么添加的子图层没有显示在屏幕截图中? 的相关文章

  • 为什么在尝试编译此代码时会收到错误“错误:未知类型名称'虚拟'”?

    Code struct IRenderingEngine virtual void Initialize int width int height 0 virtual void Render const 0 virtual void Upd
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • 如何正确创建迦太基 cartfile?

    我正在研究购物车文件 迫不及待地想 简单地创建一个购物车文件 就像所有说明所说的那样 只是 如何 简单地 创建一个 Cartfile 我创建了一个纯文本文档 将其命名为 cartfile 并在其中复制了一些依赖项 Ran carthage
  • 如何在 Swift 中将文件名与文件扩展名分开?

    给定包中文件的名称 我想将该文件加载到我的 Swift 应用程序中 所以我需要使用这个方法 let soundURL NSBundle mainBundle URLForResource fname withExtension ext 无论
  • Cordova 2.4.0 或 2.5.0 或 2.6.0 和 requirejs

    Cordova 2 4 0 及更高版本支持 AMD 加载到 javascript 中 我特别希望将 Cordova 2 5 0 与最新版本的 RequireJS backbone jquery jquery mobile 一起使用 我还没有
  • 如何找到键盘未覆盖的视图部分(UIModalPresenationStyleFormSheet)?

    我有一个视图控制器 显示带有 UITextView 的视图 并且我想在键盘出现时调整视图的大小 以便 UITextView 不会被键盘覆盖 我几乎在所有情况下都可以正常工作 据我所知 仅当视图控制器以 ModalPresentationSt
  • 如何开始复杂级别的跨平台移动应用开发? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 每 24 小时触发一次方法

    我正在尝试每天在给定时间触发一个方法 我尝试了一些方法 但我无法真正使其发挥作用 任何意见 将不胜感激 此外 如果无论应用程序是否打开它都会触发 那就更理想了 这可能吗 UI本地通知 http developer apple com lib
  • ios swift parse:从 3 个类收集数据

    我有这样的结构 User CardSet 带有指向 User objectId 的指针 user 和 col name 带有点 cards 的卡片到 Card Set objectId 和列 name 我想选择所有卡数据 包括当前用户的卡集
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • 从命令行添加 Xcode 开发者帐户

    我正在尝试使用xcodebuild allowProvisioningUpdates在我只能通过命令行访问的计算机 Azure Devops macOS 托管计算机 上 不幸的是 根据man xcodebuild为了使用 allowProv
  • 会话重新启动后 AVcapture 会话启动缓慢

    我有一个主视图控制器 它连接到具有 avcapturesession 的第二个视图控制器 我第一次从主视图控制器转向捕获会话控制器 大约需要 50 毫秒 使用 仪器 检查 然后我从捕获会话返回到主视图控制器 然后从主控制器返回到 avcap
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 使用 MapKit 的地形和卫星视图

    我是 Mapkit View 的新手 当我给出没有目的地的纬度和经度时 我想显示 MapKit中是否可以通过地形 卫星视图来显示地图 有教程链接吗 我看过一些访问 Google 地图 API html 文件 的示例 有必要吗 或者您可以通过
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • 在 Swift 中从 Parse 加载图像

    我成功地将数据从 Parse 提取到 swift 中 但我的图像似乎没有按照我的方式工作 在我的 cellForRowAtIndexPath 方法中 我执行以下操作 var event AnyObject eventContainerArr
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • 选择/取消选择特定下拉选项时切换隐藏的 div

    大家好 我有一个简单的问题 对于有 Jquery 和 Javascript 经验的人来说应该很容易 我希望在表单中的下拉字段下方有一个隐藏的 div 当选择某一特定选项时 将显示隐藏的 div 我还希望它在选择任何其他选项时消失 我将此用作
  • 错误:com.google.android.gms.ads 包不存在

    我的 Android 应用程序运行良好 API 15 直到我想包含 Google 广告 虽然 google play services jar 位于我的项目库中并且包含 com google android gms ads 但调试器会出现错
  • Spring会将内容保存在内存中还是存储在磁盘中?

    当从浏览器上传一个大小为 100 MB 的文件时 Spring 会将整个数据保留在内存中或暂时存储在磁盘中 在阅读了 Spring 文档之后 我知道如何设置临时目录 但我想知道如果我不提及这一点会发生什么 我有以下声明
  • 多次加密密码真的会更安全吗? [复制]

    这个问题在这里已经有答案了 可能的重复 双重哈希 密码是否比仅哈希一次更安全 https stackoverflow com questions 348109 is double hashing a password less secure
  • 资产文件project.assets.json没有“net6.0”的目标 - VS2022

    就在几天前 更新到 Visual Studio Community 2022 v17 2 从 v17 1 6 后出现此错误 错误NETSDK1005 资产文件 C XXXXXX Web obj project assets json 没有
  • 底部导航视图:更改应用程序启动时默认突出显示的选项卡

    如上所示 我有这个按钮导航视图 当我启动我的应用程序时 默认情况下我的 类别 选项卡会突出显示 但我想在启动我的应用程序时突出显示我的 主页 选项卡 任何人都可以帮助我摆脱它 尝试这个用法setSelectedItemId 你的方法Bott
  • 字符串初始值设定项和只读部分

    假设我有一个数组 函数的局部数组 和一个指针 char a aesdf and char b asdf 我的问题是在前一种情况下字符串文字是否 aesdf 存储在只读部分 然后复制到本地数组或者类似于 char a a e s d f 0
  • 在feathersjs中将socket.io逻辑与app.js分离

    目前 我的 app js 文件中的 socket io 配置如下 app configure feathers socketio function io io on connection function socket socket emi
  • Flutter中如何调度后台任务?

    我一直在寻找这个 但没有找到任何包或在 Flutter 中安排后台任务的方法 就像在 Android 中一样WorkManager AlarmManager 我知道我可以使用以下方式访问这些课程MethodChannel 但我想要一些适用于
  • 如何将子 SKSpriteNode 放置在其父级内部

    我不太明白定位子节点的逻辑 假设我有一个矩形 如果我没有改变它的锚点 子节点默认会出现在中间 但例如如何将其放置在矩形的左上角呢 还是右下角 我试过 child zPosition 1 child position y rect size
  • Xcode 中的存档显示在“其他项目”下

    我正在尝试使用 存档 选项将应用程序提交到 iTunes Connect 为通用 iOS 设备构建 它通常显示在管理器中的 iOS 应用程序下 然而 现在它显示在 其他项目 下 但没有更整洁的版本和想法 我最后一次构建是在 10 月 28
  • 在 GWT 单元格表中添加超链接

    我正在尝试在单元格表中添加一个超链接 然后单击该链接我想调用一个方法 使用下面的代码 我在单元格表中正确获得了超链接 但我无法通过单击链接来调用方法 当我单击链接时 它会将我带到上一页 任何解决方案 Hyperlink link new H
  • Excel VBA - 将子菜单添加到自定义右键菜单

    看了很久了 第一次发海报 我有一个带有右键单击功能的表单 可以正常工作 我试图在主右键菜单中添加一个子菜单来分隔一些功能 命令 我需要 想要插入 选择案例 所在的部分 但是 它只显示顶部菜单 不知道从这里去哪里 任何帮助都是极好的 谢谢 附
  • Python读取DOT格式的文件并返回城市名称列表

    嘿大家好 问题是这样的 说实话 这是家庭作业问题 但我只是被困住了 而且已经永远了 我的问题是 由于城市在每行中都有不同的索引位置 我们如何逐行迭代并将城市名称返回到列表中 任何可以让我开始的帮助将不胜感激 我并不懒惰 我已经为此工作了几个
  • 如何从视频中提取方向信息?

    在网上浏览了大量文档后 iPhone 似乎总是以 480x360 的宽高比拍摄视频 并在视频轨道上应用变换矩阵 480x360 可能会改变 但对于给定设备来说始终相同 这是在 iOS 项目中修改 ffmpeg 源并访问矩阵的方法http w
  • python中pandas系列的地板还是天花板?

    我有一个熊猫系列series 如果我想获得元素级下限或上限 是否有内置方法或者我是否必须编写函数并使用 apply 我问是因为数据很大所以我很看重效率 此外 还没有针对 Pandas 包提出这个问题 您可以使用 NumPy 的内置方法来执行
  • App Engine Java API 页面大小

    为什么谷歌决定忽略pageSize参数以及为什么使用不同的页面大小时收集的项目的总体大小不同 这是一个例子 Appsactivity Activities List request service activities list setDr
  • 如何更改 UIView zPosition?

    我不明白如何更改视图的位置 我尝试这样做 但没有任何反应 void viewDidLoad super viewDidLoad UIView view UIView alloc initWithFrame CGRectMake 100 10
  • 如何使用 Clang 从 C++ 字符串生成 AST?

    我正在尝试使用 Clang 操作 C 源代码 但在发现 API 时遇到问题 我想获取一串 C 源代码并从中生成 AST 就像是 auto myAst clang parse auto x 1 1 有一个最小的工作示例吗 您可以尝试下一个代码
  • 为什么添加的子图层没有显示在屏幕截图中?

    我正在尝试找出 iPad 应用程序的某些 iOS 代码中的错误 在我们的一个视图中 我们添加了子图层以产生阴影并确保视图的底部具有圆角边缘 这是我们添加子层的代码 UIBezierPath maskPath UIBezierPath bez