iOS14&macOS BigSurで、Widget付きアプリを作ってみた。(2)
こんにちは、川上です。
1アプリでiOSとmacOSが、共通で動けたら楽チンですwね。
本体は、Swift環境のiPhone,iPad対応アプリを作って、ウィジェットはSwiftUIで作成。
概ねの骨筋アプリがコレでした。
で、縦横型の表示対応ができていたのでと、iPad表示の’ウィジェット’、’SlideOver’、’SpritView’が、そのままで動いてました。
これが、iPadサポートアプリがmacOS上で動いたヤツ。
macOS上にiPadアプリを動くのは、裏で’MacCatalyst’ってのが、働いている模様。
ちなみに、iOSの骨筋アプリの各部品表示は、
・FSカレンダー
・Myアナログ時計
・CalendarEventの表示
でした。
’Myアナログ時計’、’CalendarEventの表示’は、以前にダラダラと掲載したヤツです。
’FSカレンダー’は、ググ巷で教示してもらいました。
Widgetは、’iOSのWidget Extension’を組み込み、デフォルト状態のままで、動いてましたw。
縦横型のカレンダーの表示の概ね処理は、ざっとでこんな感じでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | class ViewController: UIViewController, FSCalendarDataSource, FSCalendarDelegate { // MARK: ++++ Calendar View var m_calendar: FSCalendar! // MARK: ⚡️--ライフサイクル:viewDidLayoutSubviews() override func viewDidLayoutSubviews() { // MARK: ++++ FSCalendar makeFSCalendar() } // MARK: ++++ FSCalendarの作成 func makeFSCalendar() { let d_view = view.viewWithTag(1000) if d_view != nil { // 縦横の表示の更新 ・・・・・ return } // FSCalendarの作成 m_calendar = FSCalendar(frame: CGRect(x:0, y:0, width:340, height:250)) // デリゲートの設定 m_calendar.dataSource = self m_calendar.delegate = self m_calendar.tag = 1000 let lblPosy :CGFloat = 170 var lblPosx = view.center.x // ++++ 縦横の表示 if view.frame.height > view.frame.width { //縦表示 let update_fram = CGRect(・・・) m_calendar.frame = update_fram } else { // 横表示 let update_fram = CGRect(・・・) m_calendar.frame = update_fram lblPosx = update_fram.width / 2 + 50 } // カレンダー表示位置 m_calendar.center = CGPoint(x:lblPosx, y:lblPosy) ・・・・ view.addSubview(m_calendar) } } |
ではでは。