iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
1
Software Development

iOS App 實作開發新手村系列 第 16

Day16 當SwiftUI遇到石虎抱抱

  • 分享至 

  • xImage
  •  

20191002

前言

今天我們要建立UI為SwiftUI的專案,並實際來練習Path繪圖,由於SwiftUI還沒有時間深入的研究,因此先練習一個小題目(ref5)。
在兩年前有去台北上過彼得潘的課程,現在重頭開始學習iOS App開發,也可以接者練習網站上的一百道題目考驗(ref6),有許多題目都非常的有趣。

現在,我們馬上開始!

練習目標

今天我們要建立Swift專案,並利用Path來描繪可愛的石虎,首先參考一下原圖

圖片來源: ref4
圖片來源: 南投縣友善石虎農作促進會

練習過程

  1. 首先建立SwiftUI的專案,建立的過程都與Day13相同(如下方連結),唯一要注意的是User Interface要選『SwiftUI』(如下圖)

Day13 在Swift的世界中朗誦HelloWorld (1)
https://ithelp.ithome.com.tw/articles/10221914

  • SwiftUI專案
  1. 首先加入原圖當作背景圖,置放於下方區塊,繪圖區在我們的左上角
// background
            Image("Cat3")
                .resizable()
                .scaledToFit()
                .frame(width: 300, height: 400, alignment: .bottom)
  1. 接者畫出個別區塊,首先是頭部的區塊
// MARK: - HeadLayer
Group {
    Path { (path) in
        path.move(to: CGPoint(x: 53, y: 100))
        path.addQuadCurve(to: CGPoint(x: 66, y: 17), control:
CGPoint(x: 48, y: 50))
        path.addQuadCurve(to: CGPoint(x: 119, y: 80), control:
CGPoint(x: 90, y: 30))
        path.addLine(to: CGPoint(x: 164, y: 82))
        path.addQuadCurve(to: CGPoint(x: 214, y: 13), control:
CGPoint(x: 178, y: 38))
        path.addQuadCurve(to: CGPoint(x: 230, y: 96), control:
CGPoint(x: 234, y: 60))
        path.addQuadCurve(to: CGPoint(x: 239, y: 193), control
CGPoint(x: 265, y: 138))
        path.addQuadCurve(to: CGPoint(x: 170, y: 242), control
CGPoint(x: 235, y: 215))
        path.addQuadCurve(to: CGPoint(x: 80, y: 230), control:
CGPoint(x: 130, y: 225))
        path.addQuadCurve(to: CGPoint(x: 53, y: 100), control:
CGPoint(x: 5, y: 175))
        path.closeSubpath()
    }
    .stroke(Color(red: 165/255, green: 113/255, blue: 80/255),
lineWidth:15)
    
    Path { (path) in
        path.move(to: CGPoint(x: 53, y: 100))
        path.addQuadCurve(to: CGPoint(x: 66, y: 17), control:
CGPoint(x: 48, y: 50))
        path.addQuadCurve(to: CGPoint(x: 119, y: 80), control:
CGPoint(x: 90, y: 30))
        path.addLine(to: CGPoint(x: 164, y: 82))
        path.addQuadCurve(to: CGPoint(x: 214, y: 13), control:
CGPoint(x: 178, y: 38))
        path.addQuadCurve(to: CGPoint(x: 230, y: 96), control:
CGPoint(x: 234, y: 60))
        path.addQuadCurve(to: CGPoint(x: 239, y: 193), control
CGPoint(x: 265, y: 138))
        path.addQuadCurve(to: CGPoint(x: 170, y: 242), control
CGPoint(x: 235, y: 215))
        path.addQuadCurve(to: CGPoint(x: 80, y: 230), control:
CGPoint(x: 130, y: 225))
        path.addQuadCurve(to: CGPoint(x: 53, y: 100), control:
CGPoint(x: 5, y: 175))
        path.closeSubpath()
    }
    .fill(Color(red: 205/255, green: 154/255, blue: 114/255))
}
  1. 接者依序畫出耳朵,眼睛,鬍鬚,嘴巴等等各區塊,由於程式碼很多,請直接參考Github專案,這邊就不再列出

完成圖

可以看到上方的石虎抱抱,是我們用Path所描繪出來的。而下方的背景圖,則是原圖

總結

在今天的文章裡,我們練習建立了SwiftUI專案,
也練習了SwiftUI的使用Path來繪製可愛的石虎抱抱。
今天的內容就到這邊,感謝讀者們的閱讀。


Github:

https://github.com/chiron-wang/IT30_11

參考資料與延伸閱讀

  1. 彼得潘的 Swift iOS App 開發問題解答集
    https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E5%95%8F%E9%A1%8C%E8%A7%A3%E7%AD%94%E9%9B%86

  2. iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp - Angela Yu
    https://www.udemy.com/course/ios-13-app-development-bootcamp/

  3. 深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
    https://www.udemy.com/course/iphone-swift4/

  4. 心智圖軟體Xmind
    https://www.xmind.net/

  5. 南投縣友善石虎農作促進會《石虎家族的綠保運動》
    https://bnwinfor.com/2018/04/21/%E5%8D%97%E6%8A%95%E7%B8%A3%E5%8F%8B%E5%96%84%E7%9F%B3%E8%99%8E%E8%BE%B2%E4%BD%9C%E4%BF%83%E9%80%B2%E6%9C%83%E3%80%8A%E7%9F%B3%E8%99%8E%E5%AE%B6%E6%97%8F%E7%9A%84%E7%B6%A0%E4%BF%9D%E9%81%8B%E5%8B%95/

  6. 俄羅斯插畫家親繪石虎送台灣 有望登上彩繪列車!
    https://udn.com/news/story/7266/4013861

  7. #86 利用 SwiftUI 的 Path 繪圖
    https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84%E8%A9%A6%E7%85%89-%E5%8B%87%E8%80%85%E7%9A%84-100-%E9%81%93-swift-ios-app-%E8%AC%8E%E9%A1%8C/86-%E5%88%A9%E7%94%A8-swiftui-%E7%9A%84-path-%E7%B9%AA%E5%9C%96-8de990bc7eaf

  8. 火車環島3671藍皮普快紀念品
    https://medium.com/%E5%BD%BC%E5%BE%97%E6%BD%98%E7%9A%84-swift-ios-app-%E9%96%8B%E7%99%BC%E6%95%99%E5%AE%A4/%E7%81%AB%E8%BB%8A%E7%92%B0%E5%B3%B63671%E8%97%8D%E7%9A%AE%E6%99%AE%E5%BF%AB%E7%B4%80%E5%BF%B5%E5%93%81-89b5390d1d36

  9. Swift 起步走 集合型別
    https://itisjoe.gitbooks.io/swiftgo/content/ch1/collection_types.html


上一篇
Day15 XIB起手式
下一篇
Day17 Cocoapods VS. SPM
系列文
iOS App 實作開發新手村36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言