ios - 渐变不填满所有的UIView

标签 ios iphone swift uiview cagradientlayer

我想创建一个渐变层并将其插入到 View 中,但 View 未完全填充...

我的实际代码是:

    gradientLayer.frame = topView.bounds
    gradientLayer.colors = [UIColor.white.cgColor, UIColor.black.cgColor]

    topView.layer.insertSublayer(gradientLayer, at: 0)

This is my code and storyboard (In red is the part I want to fill)

This is my result...

我对此一无所知..它适用于全屏 View 但不适用于更小的 View ..

俯 View 当然是从 Storyboard 中导入的。也许我在 view.bound 上犯了一个错误我不知道。我是 swift 和 iOS 的初学者,所以一切皆有可能!

编辑: 问题不在于 View 的大小,而是层的大小太小,因为 View 的背景色填满了所有空间而不是层

最佳答案

这与在布局 subview 之前不应用 Storyboard中的约束有关。在 viewDidLoad() 中, View 具有 Storyboard中的固定大小。如果将设置图层框架的代码移动到 viewDidLayoutSubviews(),则约束已应用于 topView,然后它具有正确的框架。然后您可以设置图层的框架。

将此添加到您的 ProfileController

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    gradientLayer.frame = topView.frame
}

然后它将填满整个 View 。

关于ios - 渐变不填满所有的UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441262/

相关文章:

ios - 如何在 Web 服务 swift 中以 POST 形式发送图像

iphone - 保存音频文件并在 View 之间导航

ios - 在捕获列表中使用 unowned 导致崩溃,即使 block 本身没有执行

iOS:使用 Dropbox 上传多个文件

ios - 如何将 CLLocationManager.magneticHeading 转换为弧度?

ios - 如何在没有 Apple Watch App 的情况下使用 cordova 在 Apple Watch 上获取 iPhone App 的推送通知?

ios - 使用 iAd 时方向更改会导致 iOS 7 上的应用程序崩溃(无法识别的选择器发送到实例)

c++ - 使用 C++ 并作为框架编译的 Cocoapods 规范

ios - 无法在ios中显示图像

ios - iOS 中 TableView 的数据层次结构