jps*_*sim 35 iphone core-graphics ios cagradientlayer
鉴于iOS上的任意UIView,是否有一种方法可以使用Core Graphics(CAGradientLayer)来应用"前景透明"渐变?
我不能使用标准的CAGradientLayer,因为背景比UIColor更复杂.我也无法覆盖PNG,因为背景会随着我的子视图沿其父垂直滚动视图滚动而改变(见图).
我有一个非优雅的后备:让我的uiview剪辑其子视图,并在滚动父滚动视图时移动背景的预渲染渐变png.

jps*_*sim 97
这是一个令人尴尬的简单修复:应用CAGradientLayer作为我的子视图的掩码.
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = _fileTypeScrollView.bounds;
gradientLayer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
gradientLayer.startPoint = CGPointMake(0.8f, 1.0f);
gradientLayer.endPoint = CGPointMake(1.0f, 1.0f);
_fileTypeScrollView.layer.mask = gradientLayer;
Run Code Online (Sandbox Code Playgroud)
感谢Cocoanetics指出我正确的方向!
这就是我要做的。
步骤1定义自定义渐变视图(快速4):
import UIKit
class GradientView: UIView {
override open class var layerClass: AnyClass {
return CAGradientLayer.classForCoder()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let gradientLayer = self.layer as! CAGradientLayer
gradientLayer.colors = [
UIColor.white.cgColor,
UIColor.init(white: 1, alpha: 0).cgColor
]
backgroundColor = UIColor.clear
}
}
Run Code Online (Sandbox Code Playgroud)
第2步 -将a拖放到UIView情节提要中并将其自定义类设置为GradientView
例如,上面的渐变视图如下所示:

https://github.com/yzhong52/GradientViewDemo
| 归档时间: |
|
| 查看次数: |
30276 次 |
| 最近记录: |