UIButton添加了Gradient切断

时间:2017-01-13 18:16:40

标签: ios swift ipad uibutton cagradientlayer

所以我通过扩展名将渐变应用于UIButton:

std::string cmdString = "bash -c \".....\"";

通过以下方式将其应用于UIButton:

extension UIButton {

    func addGradient(withColors colors:[CGColor]) {
      let layer_: CAGradientLayer = CAGradientLayer()
      layer_.frame = self.bounds
      layer_.colors = colors
      layer_.shouldRasterize = true
      layer_.rasterizationScale = UIScreen.main.scale
      self.layer.insertSublayer(layer_, at: 0)
    }

}

不幸的是,在iPad Pro 12.9英寸(iOS 10.1)上,它似乎缩短了按钮的宽度。我也尝试在viewDidLoad中应用它,但没有用。

iPad Pro UIButton Gradient not full width

所以我的问题是如何让梯度一路走来?或者在哪里设置渐变的最佳位置?

1 个答案:

答案 0 :(得分:3)

为按钮添加渐变的扩展名都是正确的,您需要修复的是设置渐变的位置。

移动

startButton.backgroundColor = ECConstants.GenericColors.buttonOrange
startButton.setTitleColor(UIColor.white, for: .normal)
startButton.addGradient(withColors: [UIColor.white.withAlphaComponent(0.3).cgColor, UIColor.clear.cgColor])

viewDidAppearviewDidLayoutSubviews

原因是因为一旦调用了viewDidAppear(),就会计算出所有视图的大小。

对于粗糙度:(支持设备旋转)

确保在viewDidLayoutSubviews()中重新计算子图层大小。您的按钮将在设备旋转时更改大小,因此您还需要手动更改子图层大小。