How to create UIBezierPath gradient fill?

后端 未结 1 1910
日久生厌
日久生厌 2021-02-10 21:58

I would like to create a UIBezierPath with 10px rounded corners and with gradient fill. How can I acheive this effect?

Here\'s an image of what I want to do

1条回答
  •  无人共我
    2021-02-10 22:51

    3 ways that I can think of.

    1. Create a CAGradientLayer and insert it as a sublayer of theView.layer. You can even put a rounded corner radius on the layer. Of course you'll have to import QuartzCore framework.

    2. Do it with CoreGraphics, like so:

      CGGradientRef gradient;
      CGColorSpaceRef colorspace;
      size_t num_locations = 2;
      CGFloat locations[2] = { 0.0, 1.0 };
      CGFloat components[8] = { 1.0, 0.0, 0.0, 1.0,  // Start color
              0.0, 1.0, 0.0, 1.0 }; // End color
      
      colorspace = CGColorSpaceCreateDeviceRGB();
      gradient = CGGradientCreateWithColorComponents (colorspace, components, locations, num_locations);
      CGContextDrawLinearGradient (ctx, gradient, gradientStartPoint, gradientEndPoint, 0);
      CGGradientRelease(gradient);
      
    3. Create an off-screen image context that's one pixel wide and has a gradient, generate the image, then set the background color with colorWithPatternImage.

    These are in order of easiest to hardest.

    0 讨论(0)
提交回复
热议问题