标签: cagradientlayer

为什么我的CAGradientLayer会动画所有更改?

我有一个CAGradientLayer我想缩放的用户拖动手指.但是,当我设置框架时,图层会动画为新尺寸.其他属性也会发生这种情况,包括start/endPoint.

这是一个例子:

_gradient.frame = CGRectMake(0, 480-toHeight, 320, toHeight);
Run Code Online (Sandbox Code Playgroud)

然而,如果我只在用户拖动10个左右的像素时调用它,则该图层不会简单地跳转到新的大小,而是以平滑但快速缓动的动画进行动画制作.我很肯定这不是在动画块中调用的.为了进一步调试,我还UIView为同一范围内的a框架设置了动画,并且没有动画.

我是新手CALayers,所以也许我做错了什么.

iphone objective-c calayer ios cagradientlayer

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

iOS UITableView:usingCAGradientLayer导致初始对象不出现在表视图中

正如我在这里的问题中所讨论的,我尝试使用CAGradientLayer设置UITableView的背景颜色.我正在使用NSMutableArray中的一些值来填充UITableView,就像这样......

- (void)viewDidLoad
{
    // ....
    if (!navigationItems) {
        navigationItems = [[NSMutableArray alloc] initWithObjects:@"1", @"2", @"3", @"4", nil];
    }

}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSArray *colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:213.0f/255.0f green:91.0f/255.0f blue:92.0f/255.0f alpha:1.0f] CGColor][[UIColor colorWithRed:213.0f/255.0f green:0.0f blue:0.0f alpha:1.0f] CGColor], nil];
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.colors = colors;
    gradientLayer.frame = tableView.bounds;

    [tableView.layer insertSublayer:gradientLayer atIndex:0];

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    cell.textLabel.text = [navigationItems objectAtIndex:indexPath.row];
    cell.textLabel.textColor = [UIColor blackColor];

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

发生的情况是,使用初始值填充的单元格似乎与我设置的渐变颜色重叠.没有文字/边框出现在这些细胞(细胞值1,2, …

uitableview ios cagradientlayer

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

为什么我不能在 ARC 中使用自定义颜色创建 CAGradientLayer?

在我的表格视图控制器的以下代码中,如果我使用“库存”颜色,[UIColor blueColor]它可以正常工作,但是如果我尝试使用 RGBA 值创建自定义颜色,它会失败并且除了纯黑色之外不绘制任何东西。

这是因为 ARC 在可以使用之前释放了 CGColorRef 吗?我怎样才能让它与自定义颜色一起工作?

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setBackgroundColor:[UIColor clearColor]];

    CAGradientLayer *selectedGrad = [CAGradientLayer layer];
    selectedGrad.frame = cell.bounds;

    UIColor* colorOne = [UIColor blueColor];//[UIColor colorWithRed:96/255 green:157/255 blue:227/255 alpha:1];
    UIColor* colorTwo = [UIColor greenColor];//[UIColor colorWithRed:54/255 green:123/255 blue:201/255 alpha:1];

    NSArray* colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];

    selectedGrad.colors = colors;
    selectedGrad.locations = [NSArray arrayWithObjects:@(0.0), @(1.0), nil];

    [cell setSelectedBackgroundView:[[UIView alloc] init]];
    [cell.selectedBackgroundView.layer insertSublayer:selectedGrad atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)

uitableview ios automatic-ref-counting cagradientlayer

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

渐变图层不适用于横向模式.迅速

我在我的视图中添加了一个渐变图层,它在纵向模式下工作完美,在横向模式下不起作用.

在此输入图像描述

在此输入图像描述

 func createGredientBackground() {

    let layer = CAGradientLayer()
    let center = UIColor(red: 249 / 255, green: 150 / 255, blue: 107 / 255, alpha: 1).CGColor
    let end = UIColor(red: 247 / 255, green: 93 / 255, blue: 89 / 255, alpha: 1).CGColor
    let start = UIColor(red: 255 / 255, green: 229 / 255, blue: 180 / 255, alpha: 1).CGColor

    layer.colors = [start, center,end]
    layer.frame = self.view.bounds //self.view.frame
    print(layer.frame)
    layer.startPoint = CGPointMake(0.0, 0.5)
    layer.endPoint = CGPointMake(1.0, 0.5)

    self.view.layer.insertSublayer(layer, atIndex: 0)

} …
Run Code Online (Sandbox Code Playgroud)

ios cagradientlayer swift

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

在UIView上运行渐变不起作用

我试图以编程方式向UIView添加渐变,但它无法正常工作.它似乎根本没有颜色.我附上了相关代码以及截图.注意我应用渐变的底部正方形.有人能帮我弄清楚我在做错了什么吗?

截图

let sundayView = UIView()

override func viewDidLoad() {
    super.viewDidLoad()
    setupViews()
    setupSundayView()
}

func setupViews() {
    sundayView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(sundayView)
}

func setupSundayView() {
    sundayView.translatesAutoresizingMaskIntoConstraints = false

    NSLayoutConstraint.activateConstraints([
        sundayView.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor),
        sundayView.topAnchor.constraintEqualToAnchor(fridayView.bottomAnchor, constant: 16.0),
        sundayView.trailingAnchor.constraintEqualToAnchor(view.trailingAnchor, constant: -8.0),            
        sundayView.heightAnchor.constraintEqualToAnchor(mondayView.heightAnchor),
        sundayView.widthAnchor.constraintEqualToAnchor(mondayView.widthAnchor)
        ])

    let gradient = CAGradientLayer()
    gradient.frame = sundayView.bounds
    gradient.colors = [
        UIColor(red:1.00, green:0.37, blue:0.23, alpha:1.0).CGColor,
        UIColor(red:1.00, green:0.16, blue:0.41, alpha:1.0).CGColor
    ]
    sundayView.layer.insertSublayer(gradient, atIndex: 0)
}
Run Code Online (Sandbox Code Playgroud)

uiview ios quartz-core cagradientlayer swift

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

使用程序约束时如何将CAGradientLayer添加到UIView

对于Swift中的iOS应用,我正在使用程序约束,并想将CAGradientLayer()添加到UIView()。下面是我的代码不起作用。

   import UIKit

   class ViewController: UIViewController {

       let animationView: UIView = {
           let view = UIView()
           view.translatesAutoresizingMaskIntoConstraints = false
           return view
       }()

       override func viewDidLoad() {
           super.viewDidLoad()

           view.addSubview(animationView)
           setupAnimationView()
           animationView.addGradientLayer()
       }

       func setupAnimationView() {
           animationView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
           animationView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
           animationView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
           animationView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
       }
   }

   extension UIView {

       func addGradientLayer() {
           let color1 = UIColor(red: 251/255, green: 55/255, blue: 91/255, alpha: 1.0)
           let color2 = UIColor(red: 1.0, green: 70/255, blue: 0, alpha: 1.0) …
Run Code Online (Sandbox Code Playgroud)

ios cagradientlayer nslayoutconstraint swift

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

带有渐变图层的iOS UISLider

我正在构建一个iOS应用程序,我必须在其中实现自定义UISlider.问题是内置的UISlider不支持渐变轨道.另一个问题是我的UI样式指南显示当前跟踪值矩形应该是两种颜色的渐变,如图所示

在此输入图像描述

如何构建UISlider的自定义版本?我想过要么继承现有的子类,要么构建一个UIControl子类.

我正在使用xcode 9.4和swift 4.2

提前致谢!

iphone uikit uislider ios cagradientlayer

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

向 UITableViewCell 的 UIView(背景视图)添加子层是否覆盖其他单元格视图?

我正在尝试向UIView用作 a 的背景(backgroundRect)的 a添加渐变UITableViewCell。我希望渐变在与 backgroundRect 相同的 Z 位置绘制,但是在设备上构建时,它会遮挡(在顶部)我的标签和其他视图。但令人困惑的是,当我使用 ViewDebugger 时,它显示我的视图,好像它们应该出现在它们后面的渐变层?

class NewWorkoutTableViewCell: UITableViewCell {

        @IBOutlet weak var backgroundRect: UIView!

        @IBOutlet weak var dayOfTheWeekLabel: UILabel!

        @IBOutlet weak var sessionTypeLabel: UILabel!
        @IBOutlet weak var dateLabel: UILabel!
        @IBOutlet weak var sessionTypeImage: UIImageView!

        @IBOutlet weak var scoreLabel: UILabel!

        override func awakeFromNib() {
            super.awakeFromNib()

            backgroundRect.layer.cornerRadius = 8.0

            backgroundRect.layer.shadowColor = UIColor.black.cgColor
            backgroundRect.layer.shadowOpacity = 0.5
            backgroundRect.layer.shadowOffset = CGSize(width: 5, height: 5)
            backgroundRect.layer.shadowRadius = 5

            // this is making a CoreAnimation gradient layer
            let …
Run Code Online (Sandbox Code Playgroud)

ios cagradientlayer swift

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

创建具有 4 种颜色和小交叉点的渐变?

这里有很多关于如何创建多色渐变的问题,但我正在努力的是在渐变区域很小的地方创建渐变。例如,我想查看 4 种颜色,并且我希望颜色之间的 3 个交叉点具有小渐变。

    gradientLayer = CAGradientLayer()
    gradientLayer.frame = gradientFrame
    let locations = [Float](arrayLiteral: 0.3, 0.35, 0.8, 0.85)
    gradientLayer.locations = locations.map { NSNumber(value: $0) }
    gradientLayer.colors = [UIColor.red.cgColor,
                            UIColor.orange.cgColor,
                            UIColor.green.cgColor,
                            UIColor.gray.cgColor]
    layer.insertSublayer(gradientLayer, at: 0)
Run Code Online (Sandbox Code Playgroud)

我在红色和橙色以及绿色和灰色之间得到了很好的渐变。但是橙色和绿色之间的渐变要大得多,看起来不太对。

在此处输入图片说明

我一直无法解决这个问题。任何解决方案?

ios cagradientlayer swift

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

在 iOS 中创建带有渐变的折线图

在 iOS 中创建这样的图表的最佳方法是什么?

在此输入图像描述

我的第一个想法是创建一条贝塞尔曲线路径,然后添加具有不同位置的渐变层。但这是行不通的,因为文档指定:

这些值必须单调递增。

我的图表中情况并非如此。

关于实现这一目标的好方法有什么想法吗?

谢谢

gradient ios uibezierpath cagradientlayer swift

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

animationForKey上的EXC_BAD_ACCESS:

我正在尝试使用Scintilla组件的最新功能,该组件提供类似OSX的文本突出显示效果(黄色动画弹跳框),并且我遇到了间歇性弹出的错误:

EXC_BAD_ACCESS

指向这个特定的行:

if (layerFindIndicator!=nil)
        if ([layerFindIndicator animationForKey:@"animateFound"])
            [layerFindIndicator removeAnimationForKey:@"animateFound"];
Run Code Online (Sandbox Code Playgroud)

(ifs是我的;以防万一我把对象layerFindIndicator弄为零,或者解除分配或其他什么......不幸的是,它没有帮助......)

layerFindIndicator似乎是一个子类CAGradientLayer.(您可能会看到完整的代码layerFindIndicator,在这里).

既然,我是Quartz Core的绝对新手,请给我任何关于如何进行调试的提示?

cocoa exc-bad-access objective-c quartz-graphics cagradientlayer

0
推荐指数
1
解决办法
257
查看次数

从UIColors或NSColors数组创建CGColors数组

我一直在测试CAGradientLayer为iOS和Mac OS X(Cocoa)创建渐变颜色.例如,我有以下代码行来为iOS创建渐变颜色.

let gradient: CAGradientLayer = CAGradientLayer()
gradient.frame = view.bounds
gradient.colors = [UIColor.orangeColor().CGColor,UIColor.redColor().CGColor]
gradient.locations = [0.1,0.9]
self.view.layer.insertSublayer(gradient,atIndex:0)
Run Code Online (Sandbox Code Playgroud)

现在,我所拥有的是一系列颜色(UIColorNSColor),具体取决于开发平台.如果我以编程方式创建一个包含UIColor(或NSColor)对象的数组,则以

var cArray = [UIColor]() 
Run Code Online (Sandbox Code Playgroud)

要么

var cArray = [NSColor]()
Run Code Online (Sandbox Code Playgroud)

,如何创建包含CGColors的数组?我在想这个话题可能是相关的.一个问题是我不知道如何声明和初始化CGColor对象的数组.

谢谢

cocoa-touch cgcolor ios cagradientlayer swift

0
推荐指数
1
解决办法
1131
查看次数

使用渐变标题和cornerBorder清除UIButton

如何给UIButton标题添加渐变,虽然按钮背景清晰,但边角也是渐变的。

我在这里找到了如何添加渐变边框但不知道如何制作渐变标签。如果标签渐变与边框渐变颜色相匹配,那就太好了。

也许我可以用形状像标签的面具以某种方式创造这种效果?

uibutton ios cagradientlayer

0
推荐指数
2
解决办法
1923
查看次数