可以从 UIView 复制 CALayer 吗?

2023-12-22

这是我的设置:我有一个 CALayer,我想向其中添加子层。我通过设置 UILabel 创建这些子层,然后将 UILables 层添加到我的主层。当然,这会使沉重的 UILabel 对象在后台徘徊。是否可以从 UIView 获取图层及其所有内容并摆脱 UIView 本身? 我已经尝试过这个:

UILabel* label;
[...]
[mainLayer addSublayer:[label.layer copy]];
[label release];

但是每当我释放 UIView 时,该层的内容也会被删除。这是否可能,或者 UIView 的层是否始终需要 UIView 本身来显示其内容?我将图层视为一种画布,UIView 在其上进行绘制。我想我的这个假设可能是错误的:)


我不明白为什么你不能复制图层。确实,图层是 UIView 的“组成部分”。但最终它只是另一个具有多个属性的对象。

实际上 CALayer 有一个方法叫做:

- (id)initWithLayer:(id)layer

但它并不是为了复制图层。 (你可以阅读Apple的文档来了解原因)

CALayer 不符合 NSCopying,所以你有两个选择:

  1. 将其子类化并实现 “copyWithZone:”(并符合 NS复制)
  2. 编写一个方法/函数 返回 CALayer 的“副本”

无论您选择哪种方式,您要问的问题是:您要复制 CALlayer 的哪些属性?

假设您只想复制内容和框架:

CALayer copyLayer = [CALayer layer];

copyLayer.contents = theLayerToBeCopied.contents;
copyLayer.frame = theLayerToBeCopied.frame;

return copyLayer;

您可以浏览并复制该图层的每个属性,或者只复制您需要的属性。放入 CALayer 类别可能是一个好方法。

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

可以从 UIView 复制 CALayer 吗? 的相关文章

  • iPhone 应用程序在 iOS 4 上安装后无法启动,但设备重启后可以运行

    我有一个在 iOS 3 0 3 1 3 上运行良好的应用程序 然而 在测试 iOS 4 SDK 特别构建时 该应用程序的行为很奇怪 安装后 使用 Xcode iTunes 或 iPhone 配置实用程序 应用程序会执行以下两项操作之一 应用
  • 应用内购买:卡在 paymentWithProductIdentifiers - 已弃用

    我一直在设置应用内购买 我无法做到这一点 SKPayment paymentRequest SKPayment paymentWithProduct co za nideo 100shotsbuybeer 我从 SKPayment paym
  • 在后台轮询服务器的正确方法

    假设这是可能的 我希望我的 iOS 应用程序在后台时轮询服务器 即基本上每 30 分钟检索一次 URL 的内容 并通知用户是否包含 有趣 的内容 基本上以类似的方式如果您不使用推送通知 则内置邮件客户端假定的工作方式 现在 从我到目前为止的
  • 如果应用程序意外关闭,如何重新启动应用程序

    Skype 更新文本 http www iclarified com entry index php enid 21659包含下一个 如果意外关闭 应用程序会自动重新启动 如何通过 SDK 执行此操作 据我所知 某些类型的应用程序可以在后台
  • 使用 PhoneGap + iPhone 上传文件

    据我所知 PhoneGap 应用程序大部分 如果不是全部 都是 HTML5 CSS JavaScript iPhone 本身不提供上传文件的控件 PhoneGap是否提供任何允许用户上传文件的机制 图片 视频 以 iPhone 为例 我知道
  • 如何检查 iOS 分发配置文件是否启用了推送通知?

    我有一个应用程序应该启用推送通知 但由于某种原因没有启用它们 我见过其他人下载并安装了该应用程序 但它甚至没有提示他们授予发送推送通知的权限 正如预期的那样 此应用程序不会出现在其 设置 gt 通知 中 但是 在我的 iPad 上 我能够从
  • iOS 4.0 contentScaleFactor 和比例 - 在 3.1.3 中如何处理?

    我的任务是制作一个在 iOS 4 0 中运行的应用程序再次在 3 1 3 和 3 2 中运行 大多数情况下 它很简单 但处理新 API 的扩展和其他必须传递 返回值的情况很困难 respondsToSelector performSelec
  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • NSString keepCount 是 2147483647 [重复]

    这个问题在这里已经有答案了 可能的重复 NSString 保留计数 https stackoverflow com questions 1390334 nsstring retain count Objective C NSString 属
  • 方向改变时重新定位控件

    我知道自动布局可用于在方向改变时使尺寸和位置保持一致 当方向改变时 是否可以完全改变布局 例如 请查看下面的纵向模式下简单登录屏幕的线框 现在 如果我旋转设备 我想完全重新定位控件 这种事情可以用自动布局来完成吗 如果没有 我该怎么办 谢谢
  • 如何在 UITableView 中显示零行的表格

    我正在动态地将内容加载到 UITableView 中 如果有数据 表格需要显示数据 如果没有数据 表格应显示普通页面 但在我的应用程序中 表格显示带有两条分隔线的普通页面 我需要删除此分隔线并显示纯白色页面 请建议 任何帮助 将不胜感激 如
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • UILocalNotification 在后台 10 分钟后不提示

    In didFinishLaunchingWithOptions调用函数的定时器循环httpRequest每 1 分钟间隔一次 BOOL application UIApplication application didFinishLaun
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • 如何以编程方式更改 iPhone APN(接入点名称)?

    如何以编程方式更改 iPhone APN 接入点名称 或者强制 3G GPRS 连接以编程方式使用特定的 APN 无法通过 SDK 完成 第三方应用程序无法对硬件进行这种级别的控制 尤其是蜂窝调制解调器
  • 错误域=kAFAssistantErrorDomain 代码=209“(空)”

    我面临着一个问题SFSpeechRecognizer 启动应用程序几秒钟后 我开始收到错误消息 错误域 kAFAssistantErrorDomain 代码 209 空 和 错误 域 kAFAssistantErrorDomain 代码 2
  • 如何使用 iPhone 将照片上传到服务器?

    我正在编写一个 iPhone 应用程序 它可以拍摄照片然后将其上传到服务器 如何使用 Cocoa 将照片上传到服务器 我想我在某处使用 NSUrl Thanks Header interface EPUploader NSObject NS
  • 贴纸包会在模拟器上使 iMessage 崩溃,但在 iPhone 上不会崩溃

    按照 Apple 的在线说明和视频在 Xcode 中创建了一个贴纸包 所有图像的尺寸均正确且远低于文件大小阈值 如果我在我的实体 iPhone 上构建并运行贴纸包 一切都会完美运行 如果我在模拟器上构建并运行贴纸包 对于任何模拟的 iPho
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 接收者'ClassName'是一个转发类,对应的@interface可能不存在

    我目前正在寻找一个UIPickerTable在 UIPickerView subviews 内 所以我循环并执行isKindOfClass UIPickerTable class 它有效 但由于 UIPickerTable 的标头未公开 我

随机推荐

  • 获取字符串中的所有数字并将其推送到数组(javascript)

    所以如果我有以下字符串 01 Kyle Hall Osc 04 Cygnus Artereole 07 Forgemasters Metalic 10 The Todd Terry Project Back to the Beat 14 B
  • 在排序列表中搜索值时如何节省 CPU 周期?

    In 科丁游戏 https www codingame com 学习平台上 C 教程中用作示例的问题之一是 本练习的目的是检查数组中是否存在数字 大批 规格 项目为按升序排列的整数 该数组最多可包含 100 万个项目 数组永远不会null
  • keycloak错误:无法识别的字段“access_token”

    我正在使用 keycloak 来保护我的其余 API 我遵循了这个tutorial http www first8 nl blog programmatically adding users in keycloak 以编程方式添加用户 但我
  • 如何停止 Tomcat 日志记录?

    Tomcat自动进行日志记录 日志文件都在 logs目录 据我所知 日志记录属性是 conf logging properties 我怎样才能停止所有日志记录 要停止访问日志 默认 tomcat 设置 请转到 conf server xml
  • 如何检测按键

    我想创建要在其中配置热键快捷键的表 我有这个简单的表 public static final String Column1MapKey A public static final String Column2MapKey B private
  • 获取模板类型的类型名称,无需类定义

    我正在尝试编写一个与以下内容一起使用的模板包装器smart ptr类型并在某些情况下需要抛出异常 对于这种情况 我想包含类所包装的类型的名称 由于我正在使用智能指针 因此只有前向声明可用于该类型 因此 基本问题是如何在没有可用定义的情况下获
  • Python - 请求被 Cloudflare 阻止

    我正在尝试登录一个网站 当我查看 print g text 时 我没有返回我期望的网页 而是返回一个 cloudflare 页面 上面写着 访问之前检查您的浏览器 import requests import time s requests
  • 如何在 typescript / Angular 中设置 html 元素的样式

    我试图将属性设置为 html 元素但出现错误类型 HTMLCollectionOf 不可分配给类型 HTMLElement 这是我的打字稿代码 let elem HTMLElement document getElementsByClass
  • 自动完成textview谷歌地点API

    我跟着本教程 http wptrafficanalyzer in blog android autocompletetextview with google places autocomplete api 使用 google place a
  • 无法与 Cordova / Phonegap helloworld 一起使用服务

    我已经安装了 Android SDK Ant cordova 3 4 1 设置 PATH 变量 android ant cordova命令可用 在 cordova CLI 的末尾 有以下示例用法 Example usage cordova
  • 在matlab中计算两幅图像之间的欧氏距离

    我想在Matlab中计算两个图像之间的欧几里德距离 我找到了一些例子并尝试过 但它们不正确 该欧氏距离的结果应介于0 and 1但我通过两种不同的方式得出了不同的解决方案 第一个算法给我一个 4 位数字 例如2000和其他像这样的数字 通过
  • 当 R 编译要在包中使用的 C++ 代码时,如何将标志传递给 R?

    我正在尝试在 R 包中使用 OpenCV 中的一些代码 并使用 Rcpp 来构建包 当我在我的机器上编译c代码时 它工作正常 例如 我在本地使用以下语法来编译facedetect cpp代码 g pkg config cflags open
  • 跳过 Tensorflow 中不存在或损坏的文件

    我有一些包含图像文件路径和功能的文件 其中一些图像可能丢失或损坏 我想知道如何通过跳过这些图像并将它们从队列中删除来稳健地处理错误 我注意到 简单地捕获错误并继续将导致队列输出相同的图像 因此它会在同一图像上重复出错 有没有办法在错误时使图
  • TinyMCE 堆栈类

    我使用 TinyMCE 4 作为我的默认编辑器 在配置中我指定了样式格式 除了一件事之外 它完全有效 它堆叠类 我的风格格式 style formats title Heading 2 block h2 classes heading 02
  • 使用 LINQ 使用特定范围的数字填充列表

    为了填充一个List
  • 如何使用封闭类的类型键入提示方法?

    我在 Python 3 中有以下代码 class Position def init self x int y int self x x self y y def add self other Position gt Position re
  • 成本较低的哈希算法是什么?

    我对哈希算法了解不多 在将文件转发到远程系统 有点像 S3 之前 我需要计算 Java 中传入文件的哈希值 该系统需要 MD2 MD5 SHA X 中的文件哈希值 计算此哈希值不是出于安全原因 而只是为了一致性校验和 我能够在转发文件时使用
  • 打开本机应用程序。来自野生动物园

    我知道 iPhone 应用程序 像沙箱一样操作 这意味着他们无权访问其他应用程序的文件 我还成功地使用以下命令从 Native App 在 Safari 中打开了一个网站 openURL NSURL URLWithString Websit
  • 禁用 web.config 继承?

    我的网站根目录中有一个内容管理应用程序 我尝试在子文件夹下使用另一个应用程序 计费应用程序 不幸的是 根站点的 web config 干扰了子应用程序 有没有办法只禁用子文件夹的 web config 继承 Update 如链接所示史蒂芬
  • 可以从 UIView 复制 CALayer 吗?

    这是我的设置 我有一个 CALayer 我想向其中添加子层 我通过设置 UILabel 创建这些子层 然后将 UILables 层添加到我的主层 当然 这会使沉重的 UILabel 对象在后台徘徊 是否可以从 UIView 获取图层及其所有