- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以在 iOS 中创建一个具有 4 种不同颜色的渐变(我使用的是 Swift,但 Objective-C 中的示例也可能有帮助),但每种颜色都从不同的角发出?
我创建了一个渐变,根据我可以放置颜色的位置,它可以是左上角->右下角或左下角->右上角,但这仅适用于 2 种颜色。这是我为此尝试的代码:
let gradientColors: Array <AnyObject> = [bottomColor1.CGColor, topColor2.CGColor]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
gradientLayer.startPoint = CGPointMake(0.0, 1.0);
gradientLayer.endPoint = CGPointMake(1.0, 0.0);
这成功地创建了一个从一个角到另一个角的 2 色渐变,其中 bottomColor1
和 topColor2
是 UIColor
。但是,我如何在另外两个角创建一个带有 2 种额外颜色的类似渐变?
最佳答案
感谢@Martin R 的建议,这里有一些代码可以创建看起来效果很好的混合。由于有太多颜色,中间变得很暗,但最终得到了预期的效果:
let gradientColors: Array <AnyObject> = [topColor1.CGColor, UIColor.clearColor().CGColor]
let gradientLocations: Array <AnyObject> = [0.0, 1.0]
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.colors = gradientColors
gradientLayer.locations = gradientLocations
gradientLayer.startPoint = CGPointMake(0.0, 0.0);
gradientLayer.endPoint = CGPointMake(1.0, 1.0);
let gradientColors2: Array <AnyObject> = [bottomColor1.CGColor, UIColor.clearColor().CGColor]
let gradientLayer2: CAGradientLayer = CAGradientLayer()
gradientLayer2.colors = gradientColors2
gradientLayer2.locations = gradientLocations
gradientLayer2.startPoint = CGPointMake(0.0, 1.0);
gradientLayer2.endPoint = CGPointMake(1.0, 0.0);
let gradientColors3: Array <AnyObject> = [UIColor.clearColor().CGColor, topColor2.CGColor]
let gradientLayer3: CAGradientLayer = CAGradientLayer()
gradientLayer3.colors = gradientColors3
gradientLayer3.locations = gradientLocations
gradientLayer3.startPoint = CGPointMake(0.0, 0.0);
gradientLayer3.endPoint = CGPointMake(1.0, 1.0);
let gradientColors4: Array <AnyObject> = [UIColor.clearColor().CGColor, bottomColor2.CGColor]
let gradientLayer4: CAGradientLayer = CAGradientLayer()
gradientLayer4.colors = gradientColors4
gradientLayer4.locations = gradientLocations
gradientLayer4.startPoint = CGPointMake(0.0, 1.0);
gradientLayer4.endPoint = CGPointMake(1.0, 0.0);
根据 Martin 的建议,我创建了 4 个渐变,每个渐变从所需角的颜色到 UIColor.clearColor()
,然后我设置了 startPoint
/ endPoint
相应地从左下角到右上角或从左上角到右下角。
在这段代码之后,我简单地将所有这些渐变层添加到我的 blendView
中,所有这些都具有相同的框架:
let background1 : CAGradientLayer = gradientLayer;
background1.frame = blendViewFrame;
let background2 : CAGradientLayer = gradientLayer2;
background2.frame = blendViewFrame;
let background3 : CAGradientLayer = gradientLayer3;
background3.frame = blendViewFrame;
let background4 : CAGradientLayer = gradientLayer4;
background4.frame = blendViewFrame;
blendView.layer.insertSublayer(background1, atIndex: 0)
blendView.layer.insertSublayer(background2, atIndex: 1)
blendView.layer.insertSublayer(background3, atIndex: 2)
blendView.layer.insertSublayer(background4, atIndex: 3)
所以最后,可以用 4 种不同的颜色绘制一个 4 角渐变...中间变得很暗,但上面是如何做的。
关于ios - CAGradientLayer 在 4 个不同的角上有 4 种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284023/
ios渐变圆环旋转动画cashapelayer cagradientlayer shape.gif demo.png ?
我正在尝试在 View 上设置渐变背景,但下面的代码使 UIView 显示为纯黑色。如果我将白色更改为绿色,渐变将正确显示。将图层的背景颜色更改为 greenColor 会使 View 显示为纯绿色。
我正在尝试创建一个具有渐变背景的 UITableViewCell。我不明白为什么,但 UITableView 的右侧有一个空白区域。我尝试通过设置纯色但结果没有改变。 这是我的 UITableView
我的问题很简单。 我想使用 CAGradientLayer 为我的 UIView 制作漂亮的渐变背景。 但问题是它显示出丑陋的紫罗兰色,而不是我想要的美妙的红色。 这是我正在使用的代码: - (voi
我使用下面的代码来设置我的 View 的渐变背景颜色。 CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame
我正在尝试创建两个渐变层,一个位于 ScrollView 的每一侧,以显示有要滚动到的内容。 左侧的效果很好,但右侧的显示完全透明。我错过了什么? CAGradientLayer *l = [CAGr
好的,我有一个 Collection View 和一个使用 Xib 文件创建的自定义单元格,以便我可以在不同 View 的另一个 Collection View 中使用相同的单元格。在我的 cellF
关于CAGradientLayerlocations属性的文档指定它必须设置为从0到1的NSNumber数组,但它实际上适用于负数和大于1的数字。这样使用安全吗? 它按照您期望的方式工作 gradie
我有以下代码来呈现一个CAGradientLayer,它应该覆盖整个 View 。但是,它在模拟器中显示不正确。我打印了 self.view.bounds.width 和 self.view.boun
您好,我正在尝试从该颜色设置为另一个 View 的渐变中获取颜色。我可以设置开始和结束颜色,但不能设置角度和类型。 以下是值:1.开始颜色:@“2b2b2b”2.结束颜色:@“4a4a4a”3.渐变角
我有一个像 Instagram 个人资料图片中那样的圈子,里面有故事。我想要有一种像圆圈在旋转的感觉。为此,我使用了 CABasicAnimation。它正在旋转,但不在中心。 正如我搜索的那样,我需
我正在使用代码 NSArray *buttons = [NSArray arrayWithObjects: self.rollBtn,nil]; for(UIButton *btn in
我正在为我的 View 背景设置渐变: CAGradientLayer *grad = [CAGradientLayer layer]; grad.frame = self.contentView.f
CAGradientLayer 有两个属性startPoint 和endPoint。这些属性是根据单位坐标空间定义的。结果是,如果我有两个具有相同起点和终点且每个边界不同的渐变层,则这两个渐变将不同。
我用CAShapeLayer画了一个圆,并设置为CAGradientLayer的mask,代码如下: CAShapeLayer *circleShapeLayer = [CAShapelayer ne
我使用 CAGradientLayer 来生成这个细线渐变。问题是自转不顺畅。当 UIViewController 旋转时,我在 viewDidLayoutSubviews 中设置包含该层的 View
我使用 CAGradientLayer 作为按钮的背景。 cell.showOnMap.clipsToBounds = YES; cell.showOnMap.layer.cornerRadius =
我想要一个彩色渐变来覆盖我的 View 。在 View Controller 中,我有这段代码 - (void)viewDidLoad { self.view.backgroundColor =
我想为我的 UIView 创建一个渐变作为背景色。我写了这段代码 gradient.colors = [UIColor.blue,UIColor.yellow] gradient.lo
有一个CAShapeLayer 当我将它添加为 mask 时,我得到一个空白屏幕 这是我的代码: let width: CGFloat = frame.width let radius
我是一名优秀的程序员,十分优秀!