大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

iOS14&macOS BigSurで、Widget付きアプリを作ってみた。(2)

著者:川上洋
公開日:2021/01/14
最終更新日:2021/01/14
カテゴリー:技術情報 雑記

こんにちは、川上です。

1アプリでiOSとmacOSが、共通で動けたら楽チンですwね。
本体は、Swift環境のiPhone,iPad対応アプリを作って、ウィジェットはSwiftUIで作成。
概ねの骨筋アプリがコレでした。

で、縦横型の表示対応ができていたのでと、iPad表示の’ウィジェット’、’SlideOver’、’SpritView’が、そのままで動いてました。

これが、iPadサポートアプリがmacOS上で動いたヤツ。
macOS上にiPadアプリを動くのは、裏で’MacCatalyst’ってのが、働いている模様。

ちなみに、iOSの骨筋アプリの各部品表示は、
・FSカレンダー
・Myアナログ時計
・CalendarEventの表示
でした。

’Myアナログ時計’、’CalendarEventの表示’は、以前にダラダラと掲載したヤツです。
’FSカレンダー’は、ググ巷で教示してもらいました。

iPadサポートアプリのmacOS対応のxcode設定は、

Widgetは、’iOSのWidget Extension’を組み込み、デフォルト状態のままで、動いてましたw。

縦横型のカレンダーの表示の概ね処理は、ざっとでこんな感じでした。

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)
    }

}

ではでは。

    上に戻る