swift 快速奔跑的兔几 本节的内容是:绘画第二讲~

本文深入探讨了阴影与渐变效果在UI设计中的应用,通过实例展示了如何使用阴影为UI元素增添立体感,以及如何创建美观的渐变背景。详细介绍了阴影效果的设置方法和渐变背景的实现过程,旨在提升用户体验和视觉吸引力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

绘制阴影的栗子:
注意需要保存和恢复上下文,否则画布上所有的绘制图形都会加上阴影。

// shadow
        let context = UIGraphicsGetCurrentContext()

        let shadowRect = CGRectInset(self.bounds, self.bounds.size.width*0.1, self.bounds.size.height*0.1)

        let shadowPath = UIBezierPath(roundedRect: shadowRect, cornerRadius: 10)

        CGContextSaveGState(context)

        let shadowStyle = UIColor.blueColor().CGColor
        let shadowOffset = CGSize(width: 3, height: 3)
        let shadowBlurRadius:CGFloat = 5.0

        CGContextSetShadowWithColor(context, shadowOffset, shadowBlurRadius, shadowStyle)

        UIColor.grayColor().setFill()
        shadowPath.fill()

        CGContextRestoreGState(context)

下面是渐变的栗子:


        let colorSpace = CGColorSpaceCreateDeviceRGB()

        let context = UIGraphicsGetCurrentContext()

        let gradientStartColor = UIColor(red: 0.1, green: 0.1, blue: 0.8, alpha: 1)
        let gradientEndColor = UIColor(red: 1, green: 0.6, blue: 0.8, alpha: 1)

        let gradientColors:CFArray = [gradientStartColor.CGColor,gradientEndColor.CGColor]
        let gradientLocations:[CGFloat] = [0.0,1.0]

        let gradients = CGGradientCreateWithColors(colorSpace, gradientColors, gradientLocations)

        let pathRect = CGRectInset(self.bounds, 20, 20)

        let topPoint = CGPointMake(self.bounds.size.width/2, 20)
        let bottomPoint = CGPointMake(self.bounds.size.width/2, self.bounds.size.height - 20)

        let roundedRectPath = UIBezierPath(roundedRect: pathRect, cornerRadius: 4)

        CGContextSaveGState(context)
        roundedRectPath.addClip()
        CGContextDrawLinearGradient(context, gradients, bottomPoint, topPoint, CGGradientDrawingOptions.DrawsAfterEndLocation)
        CGContextRestoreGState(context)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值