SwiftUI直通车系列(5)—— 自定义绘制(二)

简介: SwiftUI直通车系列(5)—— 自定义绘制

二、设置绘制属性


   在SwiftUI中,完成了图形的定义是一步,之后我们还需要将图形描边绘制或填充绘制。无论是描边绘制还是填充绘制,我们都可以定制化的对绘制属性进行控制,例如下面的示例代码:


struct DrawTestView:View {

   var body: some View {

       VStack {

           Path { path in

               let width = 200

               let height = 0

               path.move(to: CGPoint(x: width, y: height))

               path.addLine(to: CGPoint(x: 100, y: 200))

               path.addLine(to: CGPoint(x: 200, y: 400))

               path.addLine(to: CGPoint(x: 300, y: 200))

               path.addLine(to: CGPoint(x: 200, y: 0))

           }.stroke(style: StrokeStyle(lineWidth: 3, lineCap: CGLineCap.butt, lineJoin: .bevel, miterLimit: 2, dash: [15,4], dashPhase: 2)).foregroundColor(.blue)

           Path { path in

               let width = 200

               let height = 20

               path.move(to: CGPoint(x: width, y: height))

               path.addLine(to: CGPoint(x: 100, y: 220))

               path.addLine(to: CGPoint(x: 200, y: 420))

               path.addLine(to: CGPoint(x: 300, y: 220))

           }.fill(LinearGradient(gradient: Gradient(colors: [Color.red, Color.blue]), startPoint: .top, endPoint: .bottom))

       }

   }

}

效果如下图所示:

image.png



对于描边绘制,我们可以设置线的风格,间距,转角风格等。对于填充绘制,我们可以为其设置渐变填充,上面代码示例的是线性渐变效果,系统还提供了圆心渐变等功能。


三、简单的图形变换和组合


   有规律的对绘制的图形进行变换和组合往往可以得到非常美观的复合图形,例如对于上面绘制的菱形,我们可以通过修改透明度进行图形组合,并使用旋转变换的方式使其构建出更加美观的图标,修改代码如下:


struct DrawTestView:View {

   let angle:Angle

   var body: some View {

           Path { path in

               let width = 250

               let height = 150

               path.move(to: CGPoint(x: width, y: height))

               path.addLine(to: CGPoint(x: 100, y: 300))

               path.addLine(to: CGPoint(x: 200, y: 450))

               path.addLine(to: CGPoint(x: 300, y: 100))

           }.fill(LinearGradient(gradient: Gradient(colors: [Color.red, Color.blue]), startPoint: .top, endPoint: .bottom)).rotationEffect(angle, anchor: .center)

       }

}


struct DrawContent:View {

   var body: some View {

       ZStack{

           ForEach(0 ..< 10) { i in

               DrawTestView(angle: Angle(degrees:Double(36*i))).opacity(0.3)

           }

       }

   }

}


struct ContentView_Previews: PreviewProvider {

   static var previews: some View {

       DrawContent()

   }

}

效果如下图所示:

image.png

目录
相关文章
|
3月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
95 1
|
4月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
79 5
|
9月前
|
Swift 图形学 iOS开发
【Swift开发专栏】Swift中的自定义视图与绘制
【4月更文挑战第30天】本文探讨了Swift中自定义视图的创建与绘制,分为基础知识、绘制步骤和性能优化三部分。开发者通过继承`UIView`,重写`draw(_:)`方法并利用Core Graphics进行2D绘图。提高性能的技巧包括避免重复绘制、使用轻量级视图、优化图形上下文使用、启用图层背板及避免阻塞主线程。自定义视图让iOS和macOS界面更独特高效,进阶可探索Core Animation和Metal等技术。
112 0
|
Swift
Swift -banner滚动图自定义
Swift -banner滚动图自定义
257 0
Swift -banner滚动图自定义
|
Swift
Swift - 自定义tabbar的封装
Swift - 自定义tabbar的封装
368 0
Swift - 自定义tabbar的封装
|
Swift
Swift之自定义Button
Swift之自定义Button
245 0
Swift之自定义Button
|
Swift iOS开发
UISlider自定义滑动条高度(swift)
UISlider滑动条的高度系统默认给我们设定了,没有办法进行改变。可是,我们的设计又是需要改变这个高度的,怎么办呢?这个时候,我们可以写一个UISlider的子类,重写四个方法就能实现了。
3672 0
|
Swift
swift微博第9天(自定义微博首页的菜单)
swift微博第9天(自定义微博首页的菜单)
190 0
swift微博第9天(自定义微博首页的菜单)
|
Swift
Swift5.1—自定义运算符
Swift5.1—自定义运算符
157 0
|
Swift
swift微博第17天(UITableViewCell的自定义)
swift微博第17天(UITableViewCell的自定义)
250 0

热门文章

最新文章

相关课程

更多