为什么渐变不覆盖视图的整个宽度

2023-11-24

我正在尝试将渐变应用于限制在主屏幕的顶部、左侧和右侧的视图,但由于某种原因,渐变没有覆盖所应用视图的整个宽度(请参见中的黄色)图片)。

class ViewController: UIViewController {

    @IBOutlet weak var myView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let gradient = CAGradientLayer()
        gradient.colors = [UIColor.blue.cgColor, UIColor.white.cgColor]
        gradient.startPoint = CGPoint(x:00, y:00)
        gradient.endPoint = CGPoint(x:0, y:0.6)
        gradient.frame = myView.bounds
        myView.clipsToBounds = true
        myView.layer.insertSublayer(gradient, at: 0)
    }
}

我究竟做错了什么?

enter image description here


问题很可能是您在中添加渐变层viewDidLoad()。直到之后视图才会设置为最终尺寸viewDidLoad().

您的视图控制器可能在 XIB/Storyboard 中设置为与运行它的屏幕尺寸不同的屏幕尺寸。 (假设您将其设置为 iPhone SE 尺寸,但您在 6 上运行它。6 的屏幕稍宽,因此当首次加载视图时,图层将设置为 iPhone SE 的宽度。然后视图的大小将被调整,但图层的大小永远不会调整。)

您应该实现 UIViewController 方法viewDidLayoutSubviews(),并在该方法中调整图层的框架:

override func viewDidLayoutSubviews() {
  gradientLayer.frame = self.view.bounds
}

这样,如果视图大小发生调整(例如,由于自动旋转),渐变层将自动相应调整。

EDIT:

正如 Sulthan 所指出的,对图层框架的更改默认是动画的。您可能应该将框架更改包装在CATransaction.begin/CATransaction.end并禁用操作,如下所示:

override func viewDidLayoutSubviews() {
  CATransaction.begin()
  CATransaction.setDisableActions(true)
  gradientLayer.frame = self.view.bounds
  CATransaction.commit()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么渐变不覆盖视图的整个宽度 的相关文章

  • 根据 Swift 中的列表选择在 ViewController 之间传递值

    我试图将 listView 选择的选定索引号从一个 ViewController 传递到另一个 ViewController 但遇到了 tableView didSelectRowAtIndexPath 委托运行时间稍晚于prepareFo
  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • 在 Pages 文稿中打开文本—Swift

    在我的 Swift 2 应用程序中 用户通过文本字段创建一串文本 然后将其共享给另一个应用程序 现在 我只能将文本共享为 txt 文件 这不提供选项Open In Pages当我打开系统共享对话框时 如何才能让用户可以选择将输入的文本作为
  • Swift try inside Objective-C 块

    我需要创建一个函数foo它接受一个抛出闭包作为参数 我可以使用 Swift 或 ObjC 来实现它 但我需要能够从两者中调用它 像这样 Swift func bar throws func foo block throws gt void
  • 从 ios 应用程序到 symfony2 Web 应用程序的登录和管理会话

    我使用 Symfony2 开发了一个 Web 应用程序 我用过FOS用户包用于用户管理和安全 现在 我正在考虑为我的网络开发一个本机 iOS 应用程序 但并不真正知道如何解决从应用程序创建会话的问题 并在整个交互用户应用程序中维护它 换句话
  • 在 iOS 7 中查看 Core Data 创建的 sqlite 文件时出现问题

    当我尝试访问由核心数据创建的数据库文件时遇到问题 DB 文件位于 Documents 文件夹中 我已将其复制到桌面并使用 Firefox 插件打开它 Hello sqlite文件不包含任何行我有使用核心数据插入值 我正在使用 iOS 7 模
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • 更改目录时 Gitlab CI 运行程序作业失败退出状态 1

    我正在使用我的个人机器作为使用 Fastlane 的 iOS 项目的运行程序 这主要是因为共享运行器没有为 iOS 设置 因为它们没有安装 Xcode 更改目录时我的作业立即失败 它是一个 shell 运行程序 根本没有其他自定义配置 有什
  • 如何在导航栏上添加 UIView?

    我需要覆盖UINavigationBar with UIView像这儿 除了使用带有按钮返回的自定义 UIView 作为导航栏之外 还有其他方法可以做到这一点吗 您可以将子视图添加到应用程序的基本视图 UIApplication share
  • 在 macOS 上使用 Swift 3 从剪贴板读取

    我是 Swift 的初学者 我想弄清楚如何在 macOS Swift 3 上读取已复制到剪贴板的内容 我搜索了很多 但似乎找不到任何有效的东西 我从网上尝试过的一些事情 var pasteboardItems NSPasteboardIte
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • 依赖于不同队列上的另一个操作的 NSOperation 无法启动

    我有操作的依赖图 并且使用多个队列来组织各种操作流 例如 peopleQueue sitesQueue sessionQueue sessionQueue loginOp fetchUpdatedAccountOp peopleQueue
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • AdMob 和 DFP 广告联盟之间的区别?

    我正在尝试在我的 iOS 应用程序上显示横幅广告和插页式广告 但现在我对广告网络感到困惑 AdMob 与 DFP 有何不同 哪一种更适合投放广告 有人可以提供帮助吗 提前致谢 AdMob 是一个广告网络 作为发布商 您可以通过展示从网络投放
  • Swift - 保存在 TableView 中选择的复选标记

    我对 Swift 相当陌生 并且在 TableView 多重选择方面遇到问题 我有多个选择 可以用复选标记进行检查 类似于待办事项列表 当我检查项目时 我希望能够返回 ListView 并保存我的选择 我假设将其保持在已保存状态的代码将位于
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • 从 URL 解析 JSON 最终出现错误 - Swift 5

    我正在尝试用 swift 编写一个函数 从 URL JSON 获取数据 并将其分配给 swift 中的变量 这是函数 func getBikeData guard let url URL string https api citybik e

随机推荐

  • 将空格转换为换行符

    是否可以使用 CSS 在每个空格上添加换行符 例如 如果我有字符串 Format It 我想像这样显示它 Format It 使用CSS 您可以使用word spacing财产 它定义了单词之间的空间 如果将其设置为容器的大小 它将强制换行
  • React Native - 当数据未更改时强制 ListView 重新渲染

    即使数据源中的数据没有更改 是否可以强制 ListView 重新渲染 我的应用程序的选项卡栏中有一个 ListView 我希望每次选择该选项卡时它都会重绘 无论数据是否相同或已更改 this state data props data da
  • 传递数据到node + express中查看

    我正在使用我的节点应用程序从 API 检索一些数据 并希望在视图中显示该数据并允许用户在那里更改它 我正在调用 api 并获得一个 JSON 响应 我想将其传递到视图上 这就是我正在做的 var query SELECT Id OwnerI
  • Android 蓝牙 StartDiscovery() 始终返回 false

    我试图发现附近的蓝牙设备 但 startDiscovery 总是返回 false 就好像它不起作用一样 因此它无法找到设备 我发现除了蓝牙和蓝牙管理之外 我还必须包含 Coarse Location 权限 但无论如何 它不起作用 这是我现在
  • 如何尝试捕获未找到的程序集

    好的 假设我有一个这样的应用程序 using System using AliensExist some DLL which can t be found 我想要的是 如果找不到程序集 DLL AlienExist 应用程序不会返回错误 而
  • 有趣的NLP/机器学习风格项目——分析隐私政策

    我想就分配给我的一个有趣问题提供一些意见 任务是分析数百个甚至数千个隐私政策并确定它们的核心特征 例如 他们是否获取用户的位置 他们是否与第三方共享 出售 等等 我和一些人交谈过 阅读了很多有关隐私政策的内容 并且自己也思考过这个问题 这是
  • 我将如何格式化 Zend_Form_Element_Radio 以便标签跟随输入?

    Zend Form Element Radio 的默认装饰器是
  • 我的自定义 selinux 策略似乎被 Android 系统忽略

    我在基于 AOSP 的 Android 7 1 2 更准确地说是基于索尼开放设备树 上正确运行自定义 selinux 策略时遇到了一些麻烦 我的问题是审核日志不断告诉我缺少我实际添加的文件访问规则 我还将audit2allow 创建的规则复
  • 查找Excel中的重复行

    我有一个包含两行的 Excel 电子表格 一个是 name 另一个是 id 有什么方法可以找到具有完全相同 id 的行并让我轻松查看这些行吗 例如我有以下行 Name Id Hello 1 World 5 Mylo 1 Jack 6 Jil
  • VBA中日期之间的SQL查询

    我在使用 Excel 和 Access 数据库在 VBA 中进行 sql 查询时遇到问题 在 mi VBA 代码中 我有两个包含以下内容的数据变量 日期最小值 31 07 2014 22 00 00 最大日期 01 08 2014 06 0
  • SwiftUI 拖放重新排序 - 检测对象释放

    我实现了一个简单的拖放来重新排序 VStack Scrollview 中的项目 根据这个解决方案 我将当前拖动的项目存储在名为的属性中draggingItem并将不透明度设置为 0 具体取决于它是否为零 当 DropDelegate 中的
  • 返回序列中的第 N 个斐波那契数?

    我的课堂作业有一个问题 我需要知道如何使用迭代返回第 n 个斐波那契数列 不允许递归 我需要一些关于如何执行此操作的提示 以便我可以更好地了解我做错了什么 我在我的program cs中输出到控制台 因此它在下面的代码中不存在 Q1 Ret
  • 在 Python 中复制数组/列表的有效方法

    注意 我是一名 Ruby 开发人员 正在尝试在 Python 中找到自己的出路 当我想弄清楚为什么有些脚本使用mylist 代替list mylist 为了复制列表 我对各种复制方法做了一个快速基准测试range 10 参见下面的代码 ED
  • 是否可以在运行时隐藏 highcharts 中的导航器?

    我正在开发一个 highcharts 项目 我们需要在运行时显示 隐藏导航器 具体取决于屏幕过滤器的值 我们已经添加 显示 隐藏各种数据系列 但我找不到允许我在运行时动态隐藏导航器的 API 调用 有谁知道如何做到这一点 除非必须 否则我不
  • 如何在行的滑动操作配置中添加 VoiceOver 的辅助功能标签?

    我正在使用 Swift 4 创建一个 iOS 应用程序 但没有使用 Storyboard 要从表视图控制器中删除行 用户向左滑动该行 然后单击 删除 按钮 这是我用来实现该功能的代码 未使用外部库 override func tableVi
  • 是否有针对 Python、Ruby、Sql、Cobol、Perl 和 PL/SQL 的静态分析工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个针对 Pyt
  • SQL 选择案例

    我有以下sql表 oitems table orderid catalogid numitems O737 353 1 O738 364 4 O739 353 3 O740 364 6 O741 882 2 O742
  • 使用rackup时找不到Sinatra静态资源

    我有一个简单的 Sinatra 应用程序 它是使用模块化样式配置的 当我使用启动应用程序时rackup p 4567根据自述文件中的建议 不提供公共文件夹中的静态资源 但是当我开始使用时shotgun config ru p 4567然后他
  • 获取图像大小而不加载到内存

    我有一些 png图片 ETA 但格式也可以是 JPEG 或其他格式 我将在其中显示UITableViewCells 现在 为了获得行高 我加载图像 获取它们size属性 并使用它来计算行的高度 计算沿途任何必要的更改 因为大多数图像在显示之
  • 为什么渐变不覆盖视图的整个宽度

    我正在尝试将渐变应用于限制在主屏幕的顶部 左侧和右侧的视图 但由于某种原因 渐变没有覆盖所应用视图的整个宽度 请参见中的黄色 图片 class ViewController UIViewController IBOutlet weak va