ラベル iOS の投稿を表示しています。 すべての投稿を表示
ラベル iOS の投稿を表示しています。 すべての投稿を表示

2024年11月18日月曜日

iOSのFONT SF(san francisco) は 公開されていた

 iOSのFONT SF(san francisco) は 公開されていた

MAUIでアプリ作成でfontをどうしようか?

Googleの noto sans かな~とと思って調査したら

iOSのFont SFが2014年から公開されていたことが判明

Appleのfontの方がカッコ良い(ヒラノギとか)個人的理由で

Apple developer fontより SF Proを DLしました。

DLファイルが dmg(Appleだから windows無視だよね)

7-zipで解凍するとfont folderにたどり着けます。

file pathは

SF-Pro\SFProFonts\SF Pro Fonts\SFProFonts.pkg\Payload~\Payload~~\Library\Fonts

dmgを解凍

SFProFonts.pkgを解凍

Payloadを解凍

Payload~ を解凍  <-- ココが重要

Payload~~\Library\Fonts

Fontsのフォルダ内にfontがあるので、ctrl+aで選択後、installしました

 

 

 


2021年9月28日火曜日

【SwiftUI App】WindowGroup の RootView を切り替える方法

 

iOS14 から採用されている SwiftUI App ライフサイクルでは以下のように WindowGroup の中にある View(ここでは ContentView)がアプリケーションの RootView になっています。

@main
struct SampleApp: App {    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

今回はこの RootView を切り替える方法について一例として紹介したいと思います。

 

WindowGroup の RootView を切り替える方法

@StateObject

今回のポイントは @StateObject 修飾子です。

以前より、@State 修飾子と言うものはありました。@State は、Int・String・Bool といった値型の変数の状態をViewと連携させるものでしたが、@StateObjectオブジェクト型(class型)の変数を扱う場合に使用します。

以下のサンプルでは、この @StateObject として宣言したオブジェクトが持つ enum を元に RootView を分岐する例を示します。

RootView 切り替え実装例

AppState シングルトンクラス

class AppState: ObservableObject {
    
    static let shared = AppState()
    private init() {}
    
    enum RootViews {
        case splash
        case main
    }
    @Published private(set) var rootView: RootViews = .splash
    
    func changeRootView(rootView: RootViews) {
        self.rootView = rootView
    }
}

ObservableObject プロトコルに準拠した AppState と言う名前のシングルトンクラスを作成します(SwiftUI らしさを考えると EnvironmentObject で表現しても良いかもしれません)。

enum でスプラッシュ画面(splash)とメイン画面(main)の列挙子を定義しました。この値で WindowGroup の RootView を切り替えます。

SplashView と MainView

struct SplashView: View {
    var body: some View {
        Text("Splash View")
            .foregroundColor(.blue)
            .onAppear() {
                DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
                    AppState.shared.changeRootView(rootView: .main)
                }
            }
    }
}

struct MainView: View {
    var body: some View {
        Text("Main View")
            .foregroundColor(.red)
    }
}

最初は、前者の SplashView が表示されています。そして表示から 2.0 秒後に AppStatechangeRootView で RootView に MainView 指定しています。

@StateObject と WindowGroup での分岐

@main
struct SampleApp: App {
    
    @StateObject private var appState = AppState.shared
    
    var body: some Scene {
        WindowGroup {
            switch appState.rootView {
            case .splash:
                SplashView()
            case .main:
                MainView()
            }
        }
    }
}

AppState.shared インスタンスを @StateObjectappState に紐づけ、WindowGroup ブロック内の switch で RootView を分岐させています。

@StateObject が付加されていなかったり、誤って @State にしてしまっていたりすると動作しませんので注意してください。

 

元ネタ https://www.yururiwork.net/archives/1188

 

 

2017年2月10日金曜日

各対応端末ごとに、以下のいずれかのサイズ1枚以上
3.5インチ端末用 4インチ端末用 4.7インチ端末用 5.5インチ端末用
640 x 920 640 x 1096 750 x 1334 1242 x 2208
640 x 960 640 x 1136 1334 x 750 2208 x 1242
960 x 600 1136 x 600

960 x 640 1136 x 640

iPad用 iPad Pro
1024 x 748 2048 x 2732
1024 x 768 2732 x 2048
2048 x 1496
2048 x 1536
768 x 1004
768 x 1024
1536 x 2008
1536 x 2048


2017年2月2日木曜日

MAGIC XPA RIA iOS用アプリ 起動時のurl

MAGIC XPA RIA iOS用アプリ 起動時のurlの設定

%EngineDir%\RIAModules\iOS\Source
settings.properties
ファイルを以下のように修正することでアプリケーションの特性を変更することができます。

URL
特性を空のままにした場合、ダイアログボックスが開き、エンドユーザが
URLを入力する必要があります。

URLに値を設定することで、初期表示 にurl入力が無くなる。

Setting.bundleの、item2に、接続するurlを指定する。

このurlは、外部設定のファイルを指定しました。