标签: cagradientlayer

如何将Gradient应用于iOS Swift App的后台视图

我正在尝试应用渐变作为视图的背景颜色(故事板的主视图).代码运行,但没有任何变化.我正在使用xCode Beta 2和Swift.

这是代码:

class Colors {
  let colorTop = UIColor(red: 192.0/255.0, green: 38.0/255.0, blue: 42.0/255.0, alpha: 1.0)
  let colorBottom = UIColor(red: 35.0/255.0, green: 2.0/255.0, blue: 2.0/255.0, alpha: 1.0)

  let gl: CAGradientLayer

  init() {
    gl = CAGradientLayer()
    gl.colors = [ colorTop, colorBottom]
    gl.locations = [ 0.0, 1.0]
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在视图控制器中:

  let colors = Colors()

  func refresh() {
        view.backgroundColor = UIColor.clearColor()
        var backgroundLayer = colors.gl
        backgroundLayer.frame = view.frame
        view.layer.insertSublayer(backgroundLayer, atIndex: 0)
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

ios cagradientlayer ios7 swift

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

iOS白色到透明渐变层是灰色的

我有一个CAGradientLayer插入到应用程序底部弹出的这个小细节视图的底部.正如你所看到的,我将颜色从白色设置为清晰,但是出现了这种奇怪的灰色色调.有任何想法吗?

    // Set up detail view frame and gradient
    [self.detailView setFrame:CGRectMake(0, 568, 320, 55)];

    CAGradientLayer *layer = [CAGradientLayer layer];
    layer.frame = self.detailView.bounds;
    layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
    layer.startPoint = CGPointMake(1.0f, 0.7f);
    layer.endPoint = CGPointMake(1.0f, 0.0f);
    [self.detailView.layer insertSublayer:layer atIndex:0];
Run Code Online (Sandbox Code Playgroud)

这是有问题的观点:

这是有问题的观点

iphone calayer uiview ios cagradientlayer

79
推荐指数
4
解决办法
2万
查看次数

CAGradientLayer,没有很好地调整大小,撕裂旋转

我正在尝试获取我的CAGradientLayers,我正在使用它创建漂亮的渐变背景,在旋转和模态视图演示时很好地调整大小,但它们不会播放球.

这是我刚创建的一个视频,显示了我的问题:请注意旋转时撕裂.

另请注意,此视频是通过在OS X上拍摄iPhone模拟器而创建的.我放慢了视频中的动画以突出显示我的问题.

问题视频......

这是我刚刚创建的Xcode项目(这是视频中显示的应用程序的源代码),基本上如图所示,旋转时出现问题,尤其是当模式呈现视图时:

Xcode Project,使用CAGradientLayer背景以模态方式呈现视图......

我理解使用以下内容是值得的:

    [[self view] setBackgroundColor:[UIColor blackColor]];
Run Code Online (Sandbox Code Playgroud)

做一个合理的工作,使转换更加无缝,不那么刺耳,但如果你看我的视频,虽然目前处于横向模式,模态呈现一个视图,你会明白为什么上面的代码无济于事.

我有什么想法可以解决这个问题吗?

约翰

iphone objective-c uiviewcontroller ios cagradientlayer

55
推荐指数
3
解决办法
2万
查看次数

UIView透明渐变

鉴于iOS上的任意UIView,是否有一种方法可以使用Core Graphics(CAGradientLayer)来应用"前景透明"渐变?

我不能使用标准的CAGradientLayer,因为背景比UIColor更复杂.我也无法覆盖PNG,因为背景会随着我的子视图沿其父垂直滚动视图滚动而改变(见图).

我有一个非优雅的后备:让我的uiview剪辑其子视图,并在滚动父滚动视图时移动背景的预渲染渐变png.

透明的uiview渐变问题

iphone core-graphics ios cagradientlayer

35
推荐指数
2
解决办法
3万
查看次数

带有GradientLayer的UIButton会遮挡图像并使渐变变暗

我在这里有一个UIButton,我想在图像下面有一个渐变作为背景(带有透明背景的符号),但我面临着两个不同的问题.

无论我如何尝试添加它,CAGradientLayer的第一个似乎都覆盖在图像的顶部,完全遮盖了图像.

其次,渐变本身似乎变暗了很多,就像按钮被禁用一样,但事实并非如此.

这是我的代码:

self.backButton = [[UIButton alloc] initWithFrame:CGRectMake(15, 35, 28, 28)];
[backButton addTarget:self
               action:@selector(goBack)
     forControlEvents:UIControlEventTouchUpInside];
[backButton setBackgroundColor:[UIColor clearColor]];
CAGradientLayer *buttonGradient = [CAGradientLayer layer];
buttonGradient.frame = backButton.bounds;
buttonGradient.colors = [NSArray arrayWithObjects:
                         (id)[[UIColor colorWithRed:.0
                                              green:.166
                                               blue:.255
                                              alpha:1] CGColor], 
                         (id)[[UIColor colorWithRed:.0
                                              green:.113
                                               blue:.255
                                              alpha:1] CGColor], 
                         nil];
[buttonGradient setCornerRadius:backButton.frame.size.width / 2];
[backButton.layer insertSublayer:buttonGradient
                         atIndex:0];
[backButton setImage:[UIImage imageNamed:@"backarrow.png"]
            forState:UIControlStateNormal];
[backButton setEnabled:NO];
[topbarView addSubview:backButton];
Run Code Online (Sandbox Code Playgroud)

uibutton calayer ios cagradientlayer

31
推荐指数
3
解决办法
7430
查看次数

如何更改CAGradientLayer色点?

现在我有一个GA Gradient图层,我设置颜色,但我想将颜色点设置为(而不是顶部中心,左上角)和底部(而不是底部中心到右下角) )只是为了改变一点.思考?下面是我到目前为止的代码......我包含了核心动画,因为我是颜色之间的动画.

- (id)init {
    self = [super init];

    UIView *gradientView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.w, self.h)];
    [self addSubview:gradientView];
    [self sendSubviewToBack:gradientView];

    topColor = [UIColor colorWithRed:0.012 green:0.012 blue:0.012 alpha:1];
    bottomColor = [UIColor colorWithRed:1.000 green:0.765 blue:0.235 alpha:1];

    gradient = [CAGradientLayer layer];
    gradient.frame = gradientView.frame;
    gradient.colors = [NSArray arrayWithObjects:(id)topColor.CGColor, (id)bottomColor.CGColor, nil];
    gradient.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:0.7], nil];
    [gradientView.layer addSublayer:gradient];

    [self performSelector:@selector(animateColors) withObject:self afterDelay:2.0];
    currentColorCount = 1;
    return self;
}
Run Code Online (Sandbox Code Playgroud)

在左边(我有什么)在左边(我想要的)

在左边(我有什么)在左边(我想要的)

core-animation ios cagradientlayer

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

淡出滚动UITextView覆盖图像?

我希望淡出滚动UITextView背景图像,类似于这个小例子顶部的渐变.

在此输入图像描述

我正试图弄清楚如何使用CAGradientLayer和掩饰来实现这一点.当视图中的文本滚动(垂直)时,我需要文本在它到达视图框架之前变得透明,以给出它向上和向下淡出的幻觉.

有关如何实现这一目标的任何提示?

core-graphics ios cagradientlayer

22
推荐指数
2
解决办法
5036
查看次数

CAGradientLayer对角线渐变

在此输入图像描述

我使用以下CAGradientLayer:

let layer = CAGradientLayer()
layer.colors = [
    UIColor.redColor().CGColor,
    UIColor.greenColor().CGColor,
    UIColor.blueColor().CGColor
]
layer.startPoint = CGPointMake(0, 1)
layer.endPoint = CGPointMake(1, 0)
layer.locations = [0.0, 0.6, 1.0]
Run Code Online (Sandbox Code Playgroud)

但是当我为图层设置bounds属性时,它只是拉伸一个方形渐变.我需要像Sketch 3应用程序图像中的结果(见上文).

我怎样才能做到这一点?

calayer ios cagradientlayer swift

22
推荐指数
1
解决办法
5145
查看次数

如何应用CAGradientLayer作为另一个CALayer的掩码?

我有一个视图,它有一个CALayer.当我创建一个CAGradientLayer并将其应用为该视图的CALayer的掩码时,没有任何反应.为什么?

在-initWithFrame:视图中我这样做:

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
//[self.layer insertSublayer:gradient atIndex:0];
self.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud)

如果我更换

self.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud)

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

然后我看到了渐变.它是从黑色到白色.

有什么诀窍?

core-animation calayer ios cagradientlayer

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

iOS 7.0中的水平CAGradientLayer

在我的应用程序中,我使用a CAGradientLayer来设置我的单元格的背景,这样:

retValue = [tableView dequeueReusableCellWithIdentifier:@"Cells" forIndexPath:indexPath];
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor blueColor];
bgColorView.layer.masksToBounds = YES;
id startColor = (id)[[UIColor colorWithWhite:0.75 alpha:1] CGColor];
id endColor = (id)[[UIColor blueColor] CGColor];
CAGradientLayer* gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = retValue.contentView.bounds;
gradientLayer.colors = @[startColor,startColor,endColor,endColor];
gradientLayer.locations = @[[NSNumber numberWithFloat:0],
    [NSNumber numberWithFloat:0.95],
    [NSNumber numberWithFloat:0.95],
    [NSNumber numberWithFloat:1]];
[gradientLayer setStartPoint:CGPointMake(0,0.5)];
[gradientLayer setEndPoint:CGPointMake(1,0.5)];
[bgColorView.layer addSublayer:gradientLayer];
retValue.selectedBackgroundView = bgColorView;
Run Code Online (Sandbox Code Playgroud)

(此代码在里面- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath)

它在iOS 6上工作正常但在iOS 7上不起作用,在新的iOS中,渐变始终是垂直的(忽略startPoint和endPoint)

有没有人在同一个问题上遇到过?

谢谢,

佩里

ios cagradientlayer

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