我正在尝试像在Android中一样在IOS中添加渐变。因此,我可以在UIImageView顶部看到我的标签,并且该标签未被隐藏。
在android中,我是在可绘制的`
中完成的<gradient
android:angle="90"
android:endColor="#00ffffff"
android:startColor="#aa000000"
android:centerColor="#00ffffff" />
<corners android:radius="0dp" />
`
我试图在IOS Swift 4.2中执行此操作,并且得到以下信息:
let gradient: CAGradientLayer = CAGradientLayer()
gradient.colors = [UIColor.blue.cgColor, UIColor.red.cgColor]
gradient.locations = [0.0 , 1.0]
gradient.startPoint = CGPoint(x: 0.0, y: 1.0)
gradient.endPoint = CGPoint(x: 0.5, y: 0.5)
gradient.frame = CGRect(x: 0.0, y: 0.0, width: showImageView.frame.size.width, height: showImageView.frame.size.height)
showImageView.layer.addSublayer(gradient)
如何使渐变从底部开始呈黑色并向上呈90度上升?如何更改不透明度?有什么想法吗?
答案 0 :(得分:1)
一些想法:
选择alpha
小于1的颜色。也许:
gradient.colors = [
UIColor.black.withAlphaComponent(0.8).cgColor,
UIColor.black.withAlphaComponent(0).cgColor
]
要使此渐变垂直,请选择具有相同x
值的起点和终点。例如。覆盖下半部分,也许:
gradient.startPoint = CGPoint(x: 0.5, y: 1)
gradient.endPoint = CGPoint(x: 0.5, y: 0.5)
使用frame
时要非常小心。您希望图层引用图像视图的bounds
(使用图像视图的坐标系),而不引用frame
(用于指定图像视图在其父视图的坐标系中的位置)。如果图像视图恰好位于0, 0
,则可能看不到差异,但是如果完全移动图像视图,这些图像将开始偏离。因此,假设您要将此渐变添加到图像视图本身,则可以使用图像视图的边界:
gradient.frame = showImageView.bounds
因此:
let gradient = CAGradientLayer()
gradient.colors = [
UIColor.black.withAlphaComponent(0.8).cgColor,
UIColor.black.withAlphaComponent(0.0).cgColor
]
gradient.startPoint = CGPoint(x: 0.5, y: 1)
gradient.endPoint = CGPoint(x: 0.5, y: 0.5)
imageView.layer.addSublayer(gradient)
gradient.frame = showImageView.bounds