标签: cagradientlayer

如何为CAGradientLayer提供"位置"

我创造了CAGradientLayer三种颜色,我需要给每种颜色不同的位置.例:

Red = 0 to 50 %
Yellow = 51 to 80 %
Green = 81 to 100 %
Run Code Online (Sandbox Code Playgroud)

我曾尝试用给startPointendPoint,但没有奏效.在此输入图像描述

core-graphics linear-gradients ios cagradientlayer

14
推荐指数
1
解决办法
9276
查看次数

CAGradientLayer属性不在UIView动画块中设置动画

我有一种感觉,我忽略了一些基本的东西,但有什么更好的方法来找到它而不是在互联网上出错?

我有一个相当基本的用户界面.我的视图UIViewController是一个子类,+layerClassCAGradientLayer.根据用户的操作,我需要移动一些UI元素,并更改背景渐变的值.代码看起来像这样:

[UIView animateWithDuration:0.3 animations:^{
  self.subview1.frame = CGRectMake(...);
  self.subview2.frame = CGRectMake(...);
  self.subview2.alpha = 0;

  NSArray* newColors = [NSArray arrayWithObjects:
                         (id)firstColor.CGColor,
                         (id)secondColor.CGColor,
                         nil];
  [(CAGradientLayer *)self.layer setColors:newColors];
}];
Run Code Online (Sandbox Code Playgroud)

问题是我在这个块中对子视图所做的更改动画就好了(东西移动和淡化),但渐变颜色的变化却没有.它只是交换.

现在,文档确实说动画块中的Core Animation代码不会继承块的属性(持续时间,缓动等).但是,根本没有定义动画交易吗?(文档的含义似乎是你会得到一个默认动画,我得不到.)

必须使用显式CAAnimation来完成这项工作吗?(如果是这样,为什么?)

core-animation uiview ios cagradientlayer

13
推荐指数
1
解决办法
5164
查看次数

如何在轮换后调整CAGradientLayer的大小?

我正在添加CAGradientLayer一个视图.当视图自动调整大小时(例如旋转后),不会调整渐变图层的大小.可以将渐变设置为与视图相同的自动调整大小吗?另请注意,我在视图中使用自动布局约束.

这是我正在做的事情:

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = CGRectMake(0.0, 0.0, frame.size.width, frame.size.height);
    gradientLayer.colors = [NSArray arrayWithObjects:
                       (id)[[UIColor colorWithRed:255.0/255.0f green:255.0/255.0f blue:255.0/255.0f alpha:1.0f] CGColor],
                       (id)[[UIColor colorWithRed:233.0/255.0f green:233.0/255.0f blue:233.0/255.0f alpha:1.0f] CGColor], nil];

    [self.layer insertSublayer:gradientLayer atIndex:0];
Run Code Online (Sandbox Code Playgroud)

cocoa cocoa-touch objective-c ios cagradientlayer

13
推荐指数
1
解决办法
1万
查看次数

Objective C - CAGradientLayer涵盖UILabel中的文本?

我试图为我添加一个渐变层,UILabel因为某些原因CAGradientLayer覆盖了我的文本.我做错了什么

- (void)viewDidLoad {
   [super viewDidLoad];

   CAGradientLayer *gradient = [CAGradientLayer layer];
   gradient.frame = CGRectMake(0, 0, myLabel.frame.size.width, myLabel.frame.size.height);
   gradient.colors = myColors;
   [myLabel.layer insertSublayer:gradient atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

objective-c calayer uiview cagradientlayer

12
推荐指数
1
解决办法
4154
查看次数

CAGradientLayer发回

我有一个UIViewController我用它创建背景渐变的地方

    CAGradientLayer *gradient = [CAGradientLayer layer];
    ...
    gradient.frame = frame;
    self.backGradient = gradient;
    [self.view.layer insertSublayer:gradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)

它工作正常,后来我必须将_selectionFrame我的视图控制器的子视图发送回:(
我经常需要发送_selectionFrame到后面和前面,用于动画和绘图目的)

self 是viewController:

[self.view sendSubviewToBack:_selectionFrame]; 
Run Code Online (Sandbox Code Playgroud)

然而,这发送的_selectionFrame背后gradient.我希望它只是在渐变之上但在每个其他子视图之下.问题是渐变不是视图,所以我不能使用渐变的函数.
我想打个电话[self.view sendSubviewToBack:gradient];

但这不起作用.

cocoa-touch core-animation ios cagradientlayer

10
推荐指数
2
解决办法
7562
查看次数

使用CAGradientLayer定义渐变的角度

我正在尝试使用绘制角度渐变CaGradientLayer.我知道角度可以使用startPoint和定义endPoint.我可以为一些标准角度计算这些点,如0,90,180,360等.但我希望将这些点制定为任意角度.我曾尝试用一些三角函数计算它,但没有取得任何成功.任何人都可以给我任何方向如何计算任意角度的这些点?

gradient objective-c linear-gradients ios cagradientlayer

9
推荐指数
3
解决办法
7847
查看次数

CAGradientLayer不工作

我创建了一个新项目.我挂QuartzCore.framework和进口<QuartzCore/QuartzCore.h>ViewController.m.

这是代码.

- (void)viewDidLoad {
    [super viewDidLoad];

    NSLog(@"view height %f", self.view.frame.size.height); // returns 667 on iPhone 6
    NSLog(@"view width %f", self.view.frame.size.width); // returns 375 on iPhone 6

    NSLog(@"layers count %lu", self.view.layer.sublayers.count); // returns 2

    // Gradient
    UIColor *colorOne = [UIColor blueColor];
    UIColor *colorTwo = [UIColor greenColor];
    NSArray *colorArray = @[colorOne, colorTwo];

    NSNumber *locationOne = [NSNumber numberWithFloat:0.0];
    NSNumber *locationTwo = [NSNumber numberWithFloat:1.0];
    NSArray *locationArray = @[locationOne, locationTwo];

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = self.view.frame; …
Run Code Online (Sandbox Code Playgroud)

objective-c calayer ios cagradientlayer

9
推荐指数
1
解决办法
4808
查看次数

Swift 2.1:CAGradientLayer颜色位置和分布

我需要在视图中显示3色分布.所以我正在使用以下代码.

func drawWithGradientLayer() {

        // total contains sum of all values contained in segmentValues variable.
        // I'm using green -> Orange -> Red colors as colors

        if total == 0 {
            return
        }

        if gradientLayer.superlayer != nil {
            gradientLayer.removeFromSuperlayer()
        }

        var previous: CGFloat = (CGFloat(segmentValues[0])/CGFloat(total))
        var locations: [NSNumber] = [previous]

        for var i=1; i<segmentValues.count; i++ {
            previous = previous + (CGFloat(segmentValues[i])/CGFloat(total))
            locations.append(previous)
        }

        locations.append(1.0) // Line may need to be commented

        gradientLayer = CAGradientLayer()
        gradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height) …
Run Code Online (Sandbox Code Playgroud)

calayer ios cagradientlayer swift

9
推荐指数
1
解决办法
5259
查看次数

background Gradient:在物镜C中从左到右线性

我的客户想要背景视图与此渐变效果 背景渐变:rgb(118,118,118)| #ffffff | rgb(198,198,197)线性从左到右 我试过这种方式但它发生在垂直方向我希望它以水平方式

UIColor *leftColor = [UIColor colorWithRed:118.0/255.0 green:118.0/255.0 blue:118.0/255.0 alpha:1.0];
UIColor *middleColor = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0];
UIColor *rightColor = [UIColor colorWithRed:198.0/255.0 green:198.0/255.0 blue:197.0/255.0 alpha:1.0];

// Create the gradient
CAGradientLayer *theViewGradient = [CAGradientLayer layer];
theViewGradient.colors = [NSArray arrayWithObjects: (id)leftColor.CGColor, (id)middleColor.CGColor,(id)rightColor.CGColor, nil];
theViewGradient.frame = self.view.bounds;
//Add gradient to view
[self.view.layer insertSublayer:theViewGradient atIndex:0];
Run Code Online (Sandbox Code Playgroud)

像这样 ?? 在此输入图像描述

objective-c ios cagradientlayer

9
推荐指数
2
解决办法
1万
查看次数

iOS在UIImageView顶部淡入黑色

我有一个UITableView在我的小区backgroundView是一个UIImageView.我希望每个图像的顶部都淡入黑色,这样我就可以覆盖一些白色文本.

我已经看过像一些答案这个,但没有一个似乎工作.

tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)我尝试过:

var imageView = UIImageView(image: image)

var gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = imageView.frame
gradient.colors = [UIColor.blackColor(), UIColor.clearColor()]
gradient.locations = [0.0, 0.1]
imageView.layer.insertSublayer(gradient, atIndex: 0)

cell!.backgroundView = imageView
Run Code Online (Sandbox Code Playgroud)

但是,当我删除渐变代码时,我看不到渐变,也没有区别.我的渐变是否位于图像下方?

如果我替换线imageView.layer.insertSublayer(gradient, atIndex: 0),imageView.layer.mask = gradient那么我的细胞只是空白和白色(不再是图像).

uiimageview ios cagradientlayer swift

8
推荐指数
1
解决办法
4188
查看次数