- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在图像上使用 CAGradientLayer
。我使用此代码来执行此操作:
UIImage *image = [UIImage imageNamed:@"perfect.jpg"];
[testImage setImage:image];
CAGradientLayer *myLayer = [CAGradientLayer layer];
myLayer.anchorPoint = CGPointZero;
//starts in bottom left
myLayer.startPoint = CGPointMake(1.0f,1.0f);
//ends in top right
myLayer.endPoint = CGPointMake(1.0f, 0.0f);
UIColor *outerColor = [UIColor colorWithWhite:1.0 alpha:0.0];
UIColor *innerColor = [UIColor colorWithWhite:1.0 alpha:1.0];
//an array of colors that dictatates the gradient(s)
myLayer.colors = @[(id)outerColor.CGColor, (id)outerColor.CGColor, (id)innerColor.CGColor, (id)innerColor.CGColor];
//these are percentage points along the line defined by our startPoint and endPoint and correspond to our colors array. The gradient will shift between the colors between these percentage points.
myLayer.locations = @[@0.0, @0.15, @0.5, @1.0f];
myLayer.bounds = CGRectMake(0, 0, CGRectGetWidth(testImage.bounds), CGRectGetHeight(testImage.bounds));
testImage.layer.mask = myLayer;
[self.view addSubview:testImage];
但是我想要的是径向渐变或者圆形渐变效果。我只在一侧得到渐变。如何实现圆形渐变层?谢谢。
最佳答案
如果你想要一个圆形渐变层,你将不得不继承并覆盖 - (void)drawInContext:(CGContextRef)ctx
方法。因为代码非常简单,对于径向渐变应该看起来像这样:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
NSArray* colors = @[(id)[UIColor whiteColor].CGColor, (id)[UIColor blackColor].CGColor];
CGFloat locations[] = {.25, .75};
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)colors, locations);
CGPoint center = (CGPoint){self.bounds.size.width / 2, self.bounds.size.height / 2};
CGContextDrawRadialGradient(ctx, gradient, center, 20, center, 40, kCGGradientDrawsAfterEndLocation);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
请注意,我现在无法测试代码,但应该没问题。如果您想要像这样的角度渐变而不是径向渐变:
你很不幸,因为 Objective c 没有办法直接实现它。要做到这一点,您可以循环遍历所需颜色之间的线性插值并直接绘制它们(实现起来并不难,但性能不佳)或使用图像作为 mask 。
关于ios - 圆形 CAGradientLayer 蒙版 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23487661/
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
我是一名优秀的程序员,十分优秀!