タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【Swift P4.5.1】Documents の jpg ファイルを表示する(失敗)

2024-09-10 22:20:11 | Swift iPadOS用

アクセスには、FileURLとFileパスを使用しての二つの方法がある。
・ファイルピッカーを使ってファイルURLを取得。
・Documents等の特定フォルダのパスが取得できるので内包フォルダ、ファイル名を付けてパスやURLを作る。

ただ、現在は直接Image()、AsyncImage()にパス、URL設定で画像表示ができない。
画像ファイルから画像データを作ってImageビューにセットしても表示できない。

面倒くさいけど逐次確認してみる。
ファイルピッカーからのURLを.absoluteString で確認すると
~/File Provider Storage/~.jpg

検索データベースか何か?【追記あり】

FileManager.default.fileExists(atPath) で存在を確認。
存在なし^^; (URL.absoluteString、URL.path)

ドキュメントピッカーを使ったので Documents フォルダのファイルと思っていたが違うのか?
FileManagerからドキュメントのURLを取得、~.jpgを連結させて存在を確認すると存在なし。
~/Documents/~.jpg

FileManager.default.fileExists(atPath)で存在確認ができない状態なので画像ファイルも画像表示できない。

アプリ内呼び出しではなく、標準ファイルアプリでは同じ名前の画像ファイルは開ける。
ファイルの情報でも所在が明確になっていない。”このiPad内”の表記で分からない。

WindowsもAndroidもファイルはパスで所在が明確になっているが、iPadOSは四次元ポケットから取り出すが如くその中には有るが明確な場所は分からないというもの。

そういう見方でアプローチを考えてみる。

 

【追記 9/11】
外部からの不正アクセスを防ぐサンドボックス構造というものでアクセス許可には「info.plist」にキー追加と設定が必要らしい。iPadOS用Swift では無理のよう。対象をコピーしてアプリ専用のフォルダにペーストして利用ができそうなので試してみる。後日。

【追追記 9/11】
チュートリアルの「イメージギャラリー」の「+」追加マークで「このiPad内」の画像を表示している。
今頃...だけど^^; この辺りを利用できれば問題なく表示できそう。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【Swift P4.5.1】サンプルが見つからない

2024-09-08 23:32:05 | Swift iPadOS用

ドキュメントフォルダの画像ファイルを表示するだけなのに説明のコードのコピペでさえ画像が表示できない。困った。

ファイルピッカーでドキュメント内のファイルURLを取得して、AsyncImage()にURLを渡しているが表示されない。
システムリソースはImage(path)で表示できる。

developerの説明もサンプル無しで凄く分かりづらい。
Web上の記事も分かりづらい。というかヒットしない。
ピントずれの記事ばかり^^。

チュートリアルにもファイルの読み書きは無さそうだし、お手上げ間近^^;


iPadOS用のSwiftではアクセス制限があるのだろうか?
USBは制限があるようで許可が必要らしい。

 

【追記】2024/9/9

謎は解明していないが、Image()等のViewにパス、URLを渡して画像を表示するものと、パス、URLから画像ファイルを開き画像データを復元してViewに設定するものの二つがあるので後者を試してみる。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【Swift】新規App

2024-09-06 20:30:48 | Swift iPadOS用

チュートリアルでビューとタップジェスチャーを試したので、新規Appから再確認をする。


【MyApp】
import SwiftUI

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

MyAppは初期状態のまま。


【ContentView】
import SwiftUI

struct ContentView: View {
    private var nameIndex = 0
    @State private var name = "bookmark.circle"
    private var names: [String] =
      ["bookmark.circle","pencil.tip.crop.circle.fill"] // リソース

    var tapGesture: some Gesture {
        TapGesture()
            .onEnded { value in
                withAnimation {
                    nameIndex += 1
                    if nameIndex == names.count {
                       nameIndex = 0
                    }
                    name = names[nameIndex]
                }
            }
   }
   var body: some View {
       VStack {
           Text("画像をタップ")
           Image(systemName: name)
               .resizable()
               .scaledToFit()
               .imageScale(.large)
               .foregroundColor(.blue)
               .gesture(tapGesture)
       }
   }
}


var body: some View { } の中でビューデザインを行う。
android studioのlayoutのXMLの役割だろうか。

body内のビューを直接アクセスする方法は現在は知りません^^。
ジェスチャーに関しては変数で変更が可能のよう。

TapGesture() .onEnded { } 内の ”value in”は数値を利用しない場合は削除可能。
withAnimation { } は画像切り替えの時にフェードアウトフェードインっぽいエフェクト有り。
これを削除するといきなり画像の切り替えとなる。

ジェスチャーの細かい設定が無い分、楽なのかな?


次は、画像タップされたら標準ファイルアプリを開いて画像ファイルを開いてみよう^^。
スライドアニメーションで画像が切り替わったら面白いけど...。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

【Swift】前途多難

2024-09-05 14:14:16 | Swift iPadOS用

ネットゲーム用に iPadAir(M2)512GB を手に入れました。
メモリが多いので場面切り替えのリロードが快適です。

そして、この性能だとSwiftでも快適らしいと聞き、フラフラと..。

まず、キーボードが必要なので物色してみた。
Logicool Pebble Keys 2 K380s に決める。
Bluetoothが iPadOS14以降なので新しいだろうと決めつけ。

接続したらキー配列の出力が違う^^;
Web検索でキーボード設定を変更すると合わせられるらしい。

設定アイコン≫一般≫キーボード≫ハードウェアキーボード≫キーボードの種類 の中で
JIS(日本)
を選択して、設定を終了。

Swiftに移ってキーボード入力。ん?出力が変わっていないよ?一部のキーが変な表示のまま^^;
こういう時は、とりあえずOSの再起動だ。
はい、キーボードのボタン上の表記と同じ出力になりました。良かった^^

Swiftのサンプルを開いてみた。
なんとなく書式の雰囲気がKotlinに似ている。
しかし、似ていて非なるものでした。

設定方法や内容を覚えるのは面倒だなぁ。気長にやろう。

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする