• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • iOS SwiftUI 自己動手做個顏色與照片選擇器Picker

    41085-90940fe75fa40379.jpg
    動手做個顏色與照片選擇器

    看看效果

    41085-7eb5d5359eca497d.gif
    Jietu20200220-154457.gif

    用到工具

    • enum 枚舉類型
    • @Binding
    • 視圖的.onTapGesture修飾器
    • 圖片剪裁
    • 圖片邊框

    實現步驟

    1、 用enum類型管理顏色

    enum PickedColor: CaseIterable {
      case black, blue, green, orange, red, yellow
      
      var color: Color {
        return Color(uiColor)
      }
      
      var uiColor: UIColor {
        switch self {
        case .black:
          return UIColor(named: "Black")!
        case .blue:
          return UIColor(named: "Blue")!
        case .green:
          return UIColor(named: "Green")!
        case .orange:
          return UIColor(named: "Orange")!
        case .red:
          return UIColor(named: "Red")!
        case .yellow:
          return UIColor(named: "Yellow")!
        }
      }
    }
    

    2、顏色選擇效果

    struct ColorPicker: View {
      @Binding var pickedColor: PickedColor
      
      let diameter: CGFloat = 40
      
      var body: some View {
        HStack {
          ForEach(PickedColor.allCases, id: \.self) { pickedColor in
            ZStack {
              Circle()
                .foregroundColor(pickedColor.color)
                .frame(width: self.diameter,
                       height: self.diameter)
                .onTapGesture {
                  self.pickedColor = pickedColor
                  print  ("\(PickedColor.allCases.firstIndex(of: pickedColor)!)")
              }
              Circle()
                .foregroundColor(.white)
                .frame(width: self.pickedColor == pickedColor ? self.diameter * 0.25 : 0)
            }
          }
        }
        .frame(height: diameter * 3)
      }
    }
    

    3、照片選擇效果

    struct ColorPickerView: View {
      @State var pickedColor: PickedColor = .red
      var body: some View {
        VStack {
            Image("\(PickedColor.allCases.firstIndex(of: pickedColor)!+1)")
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width:250,height: 250)
            .clipShape( Circle())
            .overlay(Circle()
                .stroke(lineWidth:8)
                .foregroundColor(pickedColor.color)
            )
            
          ColorPicker(pickedColor: $pickedColor)
        }
      }
    }
    

    如果需要項目完整源碼,可以加我QQ。

    QQ:3365059189
    SwiftUI技術交流QQ群:518696470

    版權聲明:本文為iCloudEnd原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/iCloudEnd/article/details/104424053

    智能推薦

    iOS SwiftUI 數據表單Form從菜鳥到高手的四種實現方案

    采集數據、處理數據、展示數據是一個程序的最基本功能。今天我們來學習一下如何使用SwiftUI的Form來采集數據。 本期我們以最基礎的用戶注冊界面為例子,向大家介紹一下數據收集的四種不同水平的實現方式。 初學者方式 相信長期看我專欄的朋友,應該可以快速搭建起下面的界面。非常簡單就是VStack、HStack、TextField等組件的簡單組合而已。 初學者方式 入門級方式 入門級的界面和初學者的完...

    SwiftUI如何從手機相冊選擇照片Picker(教程含源碼)

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握從相機選擇照片的方式 掌握sheet彈出方式 解決方案 目前SwiftUI原生還不支持從相機里面選擇照片,我們可以使用UIViewControllerRepresentable來封裝UIImagePickerController實現。 代碼 1、主界面代碼...

    iOS SwiftUI 零基礎之 GeometryReader 使用

    在談GeometryReader前,我們先聊一聊SwiftUI強大的布局魔法。在大多數情況下,SwiftUI在后臺默默的幫我們進行智能化的自動布局,讓我們編程生活變得更美好。 GeometryReader 讓我們具有工匠精神 蘋果的魔法布局保障了整個蘋果生態圈的設計水準,但作為一個有創新想法的工匠,我們有時候(其實大多時間)需要表現自己個性,希望對界面布局進行更多的控制。這時候GeometryRe...

    iOS SwiftUI 如何在向圖像上添加通知標簽

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 基礎知識(如果高手可以略過,下面更精彩) SwiftUI是一種創新,簡便的方法,可以跨每個Apple平臺構建用戶界面。僅使用一個工具包和API為Apple的任何設備開發用戶界面。使用Swift語法,很容易閱讀。 實戰需求 該項目的目標是為圖像添加標簽。結果將模仿圖標頂部的通知標簽外觀。您可以使用此方法在應用程序內顯示好友請求,在帖子上收到評論或其...

    SwiftUI popover 快速應用小代碼(支持iPad和iOS))

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 [email protected] Jietu20200507-094537.gif 看完本文您將掌握的技能 掌握popover基礎使用 代碼 技術交流 QQ:3365059189 SwiftUI技術交流QQ群:518696470 請關注我的專欄icloudend, SwiftUI教程與源碼 https://www.jians...

    猜你喜歡

    SwiftUI 如何創建widgets for iOS14

    Widgets小部件在iOS中存在很長一段時間,但iOS 14對其進行了徹底的改進,WWDC2020明確要求使用SwiftUI編寫。 iOS 14的小部件有多種類型,范圍從簡單的信息方塊到可以從其父應用程序的Siri Intents檢索和顯示信息的小部件。 但是,其中最具吸引力的就是可以在主頁放置小部件,這意味著從技術上講,您現在可以制作可視化的“微型應用程序”。如果您發現...

    iOS SwiftUI教程(1)-創建和組合視圖

    文章目錄 1. Create a New Project and Explore the Canvas 2. 新版Xcode有了更加便捷了預覽 3. Customize the Text View 3.1 以下是通過代碼對Text進行簡單的設置, 更加詳細的使用請看Text 相關API 3.2 還可以點擊command鍵 +然后點擊要修改的Text/ command+點擊文字 3.3 Combin...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡