首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

绘制UIBezierPath时UIView背景颜色始终为黑色

在绘制UIBezierPath时,UIView的背景颜色始终为黑色的原因是因为UIBezierPath是一个轻量级的绘图工具,它只负责绘制路径,并不会影响UIView的背景颜色。UIView的背景颜色由其backgroundColor属性控制,默认情况下为黑色。

要解决这个问题,可以通过以下步骤来绘制一个带有指定背景颜色的UIBezierPath:

  1. 创建一个自定义的UIView子类,并重写其drawRect方法。
  2. 在drawRect方法中,使用UIBezierPath绘制所需的路径。
  3. 在绘制路径之前,使用UIView的backgroundColor属性设置所需的背景颜色。
  4. 调用UIBezierPath的绘制方法,如stroke或fill,以绘制路径。

以下是一个示例代码:

代码语言:txt
复制
import UIKit

class CustomView: UIView {
    override func draw(_ rect: CGRect) {
        // 设置背景颜色
        self.backgroundColor = UIColor.red
        
        // 创建UIBezierPath并绘制路径
        let path = UIBezierPath(rect: CGRect(x: 50, y: 50, width: 200, height: 200))
        path.lineWidth = 2.0
        UIColor.blue.setStroke()
        path.stroke()
    }
}

在上述示例中,我们创建了一个自定义的UIView子类CustomView,并在其draw方法中设置了背景颜色为红色。然后,使用UIBezierPath绘制了一个矩形路径,并将路径的线条颜色设置为蓝色。最后,调用path的stroke方法将路径绘制到CustomView上。

这样,当你使用CustomView实例化一个视图并将其添加到界面上时,你将看到一个带有红色背景和蓝色矩形路径的视图。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,建议你参考腾讯云官方文档或咨询腾讯云的技术支持团队,以获取与云计算相关的产品和服务信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS-圆角、边框、阴影

    它表示图层角的曲率,默认值是0 圆角还可以用贝塞尔曲线来切,这样还可以实现单切某一个角,其它角不切的效果,我的demo中就是用该方法实现的,有兴趣的可以下下来看一看 conrnerRadius只影响背景颜色不影响背景图和子图层...,并且边框是沿着图层bounds绘制,同时包含图层的角 borderWidth边框的宽度,以点单位,默认是0;borderColor边框的颜色,默认是黑色 阴影 阴影一般需要设置layer的四个属性...,值越大,阴影透明度越低 2)shadowColor 阴影的颜色,默认是黑色 3)shadowOffset 阴影的方向和距离,默认是(0, -3),即阴影相对于Y轴有3个点的向上位移 4)shadowRadius...layer的边界之外的,所以当我们设置masksToBounds属性YES ,阴影就会被裁剪掉 圆角+阴影 从上面我们可以得出,因为对裁剪属性不同需求,在一个view上,圆角和阴影一般是不可并存的...因为我切圆角的实现方法 UIBezierPath *radiusPath = [UIBezierPath bezierPathWithRoundedRect:CGRectEqualToRect(CGRectZero

    2.7K50

    图形

    该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析 Graphics Context Graphics Context...是一个数据类型(CGContextRef)、Quartz绘制图像到输出设备的信息都保存在其中,Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等...setFill]; [p fill]; UIGraphicsPopContext(); } 4、CALayer+drawInContext 插入Layer层,注意插入Layer层,要显式调用...CGContextSaveGState(UIGraphicsGetCurrentContext()); //记录上下文的当前状态 [[UIColor blackColor] setStroke]; //画笔黑色...视图即UIView,并不是直接显示在屏幕上,而是在创建视图对象的时候视图对象会自动创建一个层,而视图对象把要显示的东西绘制在层上,待到需要显示硬件将所有的层拷贝,然后按Z轴的高低合成最终的显示结果

    1.1K10

    iOS学习——Quartz2D学习(1)

    他是一个二维的绘图引擎,同时支持iOS和Mac系统 2、Quartz2D能完成的工作   画基本线条,绘制文字,图片,截图,自定义UIView. 3、Quartz2D在开发中的价值   当我们的控件样式极其复杂...相关联.才能将内容绘制到View上面.在DrawRect方法方法里 步骤: 1.要先自定定UIView 2.实现DrawRect方法 3.在DrawRect方法中取得跟View相关联的上下文...在调用这些方法之前,我们要进行一些其他的任务去确保正确的绘制path,以及path的设置。 使用UIColor类的方法去stroke和fill想要的颜色。...使用stroke和fill方法进行渲染,不需要我们手动去获取上下文了,这两个方法会自定获取view的上下文,然后在该view上绘制渲染path对应的路径,stroke是绘制线,fill是填充path对应的封闭区域...//设置矩形路径 path UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(10, 100, 50, 50)]; //设置边框颜色

    1.1K20

    视觉效果 -- iOS Core Animation 系列三

    CALayer有一个conrnerRadius的属性控制图层的圆角曲率,默认值0。这个曲率值默认只影响背景颜色而不影响背景图片或者子图层。可以用过下面的示例看一下。...通过上面的示例可以发现: 只设置cornerRadius,默认情况下,只影响背景颜色,而不影响背景图片或者子图层。 如果想要截取这个视图的图片和子视图,需要设置masksToBoundsYES。...borderWidth是以点单位定义边框粗细的浮点数,默认为0。borderColor定义了边框的颜色,默认为黑色。 borderColor是CGColorRef类型。...当显示一个50%透明度的图层,图层的每个像素都会一半显示自己的颜色,另一半显示图层下面的颜色。这是正常的透明度的表现。...但是如果图层包含一个同样显示50%透明的子图层,你所看到的视图,50%来自子视图,25%来了图层本身的颜色,另外的25%则来自背景色。 如果想保持透明度一直。

    1.1K30

    使用CAShapeLayer绘图

    之前讲过使用UIBezierPathUIView的drawRect中绘图, 今天我们讲下另外一种方式: CAShaperLayer 先说说使用CAShapeLayer的优点: GPU执行, GPU执行...按照之前的思路是创建一个UIView子类, 用UIBezierPath画一个外围的不闭合圆弧, 在画中间点圆 代码量不是很多弹也不少, 那假如用CAShapeLayer实现时怎么样子的呢?...另外,如下图所示,整个圆形UIBezierPath其实是分为多个子路径绘制的 strokeEnd 是轮廓终点的属性,取值范围[0,1]。...请记住,在iOS中,以x轴正方向(即水平向右)0度,顺时针旋转一周360度。 下面我们再使用CAShapeLayer绘制一些特殊的形状 ?...比如hud这个, 我们之前用UIBezierPathUIView的DrawRect中画画过, 相对比较简单 我们用CAShapeLayer事实看。

    1.2K10

    绘图-几个较复杂统计图案例的实现分析

    小圆点的动画 根据数据源,在每一数据点处放上一个自定义UIView,在此自定义UIView的drawRect中绘制圆形图形,并且设置 shape.layer.opacity = 0;,即让这些小圆点(...(copy) NSArray *colors 渐变颜色的数组 @property(copy) NSArray *locations 渐变颜色的区间分布,locations的数组长度和color一致,默认是...的白色 底部0.95的地方开始是透明度0的白色, # 整个设置的意思是说,底部0.5比例处开始向上颜色渐变,并且是越来越白,顶部的白是0.9透明度的白色。...UIBezierPath,把这个路径拼接上X坐标轴上的两个垂直投影点形成一个底部矩形状的封闭路径,把个路径作为渐变图层的path,并绘制一条比这个UIBezierPath顶部低一点的路径作为 渐变图层的遮罩图层...(4) 在弹性动画的执行期间,定时器会不断的获取某一刻的所有的子视图的 坐标 ,并修改 曲线上的点的位置的坐标,并根据 currentLinePathForWave 这个方法绘制出 渐变图层的 mask

    1.4K20

    setNeedsDisplay看我就懂!

    一、着手 我定义了一个UIView的子类,用于演示使用setNeedsDisplay,这个CircleView子类会在draw(_ rect: CGRect)方法内简单绘制一个圆,它有一个颜色属性,这是我们将要设置用来改变圆的颜色...一般来说,使用框架控件,当您设置属性(如显示标签或值),您将会使用该属性,这样会导致重新绘制控件,因为系统会实现对控件drawRect方法的调用。...而我们自定义了自己的UIView子类,所以我们需要处理影响显示的控件的更新。在改变颜色的情况下,当然需要我们自己控制重新绘制。...所以我们需要调用setNeedsDisplay,明确地告诉系统必须重新绘制,从而显示新的颜色 由此,我们需要考虑三个重要的原则: 1、在iOS中,视图很明显会被缓存。...drawRect的UIView子类,需要在需要重绘指示给系统。

    1.3K60

    直播APP常用动画效果

    注意,当收到内存不足警告,NSCache会自动释放内存。所以每次访问NSCache,即使上一次已经加载过,也需要判断返回值是否空。...removeFromSuperview]; [self callBackManager]; }]; }); 常用动画效果 1、视图变暗、变大 alpha值属性是透明度,把背景设置成淡黑色...,然后调整alpha可以达到背景渐变的视图效果; UIView的transform是可以用仿射变换矩阵来控制平移、放大缩小等。...opacityAnimation forKey:@"opacityAnimation"]; 5、贝塞尔曲线运动 贝塞尔曲线是优化动画体验的很重要部分,比如说天上掉下来的羽毛,地上冒起来的气泡,空中飘荡的气球,都可以用贝塞尔曲线来绘制...天使动画的图片大小900KB,运行时占内存15MB,播放完毕后,如果收到内存不足的警告会释放内存; 烟花动画的图片大小400KB,运行时占用的内存为20MB,播放完毕后,会马上释放内存; 思考题?

    1.6K80

    绘图-CAShapeLayer、CABasicAnimation以及核心动画

    layer.png CALayer 最常用的两个子类: CAGradientLayer(用于颜色渐变的实现) // 创建 UIView 用来承载渐变色 UIView *myView = [[UIView...CAShapeLayer有不同于CALayer的属性,它从CALayer继承而来的属性在绘制是不起作用的。...#比如末端是矩形还是圆形,都是 UIBezierPath的设置,而且fillColor 也是 UIBezierPath区域内的颜色。...LineWidth 是在边界上绘制的宽度,而且 绘制的宽度被边界一分二。 #如果LineWidth 0 ,strokeColor设置后也是没有效果的。...比如设置动画时长3秒,当设置timeOffset1.5,当前动画会从中间位置开始,并在到达指定位置,走完之前跳过的前半段动画。 repeatCount -> 动画的重复次数。

    2.8K30

    创建简单动画(一) --- 常规hud

    先说下当前我处理动画的思路: (新手上路, 老司机轻喷,如果有更好的实现方法请大神指教 感恩戴德) #1. 分析动画构成 #2....比较复杂的动画则考虑是否用UIBezierpath一帧帧来画 今天我们模仿做一个场景切换加载等待动画, 比如这样的 ? 我们分析下这张图的构成 #1. 一个灰色的背景 #2. 一个白色的圆环 #3....一个闭合的圆弧(白色部分) 看起来不是简单的位移动画了, 我们用UIBezierPath加CADisplayLink一帧一帧来画试试看 灰色的背景, 这个比较简单, 我们直接创建一个UIView子类,...背景颜色设置灰色 白色的圆环, 可以用UIBezierPath直接画一个圆,注意调整线的宽度 So easy //添加外圆 UIBezierPath *apath = [UIBezierPath...} return self; } - (void)drawRect:(CGRect)rect { // Drawing code //设置线条颜色

    61420

    想要漂亮的蒙版指引吗?跟着我手把手的教你写出来

    虽然是找到了,但是被别人 Star的星很少,或者是有几百的下载出来运行Demo 就崩溃了,导致我第一间严重怀疑这个库的健壮性。 既然没有找到可以信赖的轮子,那就自己研究一下,毕竟之前没有做过。...我们设置子类试图的背景颜色黑色 0.8透明 self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; 因为我们的指引目前只有两种,那就是椭圆和原型...用于防止镂空的路径 UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.bounds]; // 便利外部传入的数据源...*/ - (UIBezierPath *)addArcBezierPath:(GBBaseMaskViewItem *)item isDash:(BOOL)isDash { // 设置绘制的圆比我们设置的大...(UIBezierPath *)addOvalBezierPath:(GBBaseMaskViewItem *)item isDask:(BOOL)isDash { // 设置偏移量3

    1.4K20
    领券