4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

swiftでosxアプリ 〜 画像ファイルを表示する 〜

Posted at

swiftでosxアプリ 〜 プロジェクト作成〜何か出すとこまで 〜
続き。 第2段
PCに保存されている画像を選択して表示させてみる。

画像ファイルを選択/表示するためのレイアウトを作る

  1. ユーティリティエリア(右側)を表示。(青:表示)
  2. Object libraryを選択。(青:選択)
  3. [Button]を検索
  4. [Push Button]部品を選択し、View Controllerにドラッグ
    スクリーンショット 2017-03-16 17.29.20.png
  5. [Image]を検索
  6. [Image View]部品を選択し、View Controllerにドラッグ。大きさを調節
    スクリーンショット 2017-03-16 17.38.09.png

配置部品とコードをつなぐ

  1. コード(丸が重なっている絵のとこ)を表示。(青:表示)
  2. [controlキー]を押しながら、コード側の「class ViewController:・・・」の下あたりに[Image View]をドラッグ。コード埋め込むだめのダイアログが出て来る
  3. [Image View]は参照なので、[Connection]は[Outlet]にする。Nameがメソッドになるので重ならないように命名する。設定が終わればconnectを押すとコードが埋め込まれる。 
    スクリーンショット 2017-03-16 17.47.13.png
  4. 同じように[controlキー]を押しながら、[Button]をコードにドラッグ。
  5. [Button]を押した後に何かさせたいので[Connection]は[Action]にする。Nameを設定してconnectでメソッドが埋め込まれる。
  6. 埋め込まれたメソッドにプログラムを書く
    スクリーンショット 2017-03-16 18.15.27.png

## 部品とコードがつながれると
コードの左はじに丸ポチができます。
スクリーンショット 2017-03-16 18.25.25.png
これがどうつながれているのかを確認するのは、ユーティリティエリアを表示させ、丸矢印マークを表示させ、[Refarencing outlets]のエリアをみます。
メソッドがどこにつながっているかわかります。
スクリーンショット 2017-03-16 18.32.14.png

プログラムを書く

ボタンを押した後に動作する内容を埋め込まれたメソッドに書きます。

code
    @IBAction func BtnImgPath(_ sender: Any) {
        //print("push")
        let dialog = NSOpenPanel() //ファイルを開くダイアログ
        dialog.canChooseDirectories=false // ディレクトリを選択できるか
        dialog.canChooseFiles = true // ファイルを選択できるか
        dialog.canCreateDirectories = false // ディレクトリを作成できるか
        dialog.allowsMultipleSelection = false // 複数ファイルの選択を許すか
        dialog.allowedFileTypes = NSImage.imageTypes() // 選択できるファイル種別
        dialog.begin { (result) -> Void in
            if result == NSFileHandlingPanelOKButton {// ファイルを選択したか(OKを押したか)
                guard dialog.url != nil else { return }
                //log.info(url.absoluteString)
                // ここでファイルを読み込む
                self.screenImg.image = NSImage(contentsOf: dialog.url!)
            }
        }
    }

これで再生してみると
スクリーンショット 2017-03-16 19.13.41.png
画像選択して
スクリーンショット 2017-03-16 19.14.12.png

表示できました。

参考
【Xcode7】Swift2でMacアプリ開発。画像を読み込む為のボタンを作る。
XcodeでCocoa, Swiftを勉強 〜ファイルを開くダイアログを知る〜

swift3だと上の参考URLのままのコードではエラーがでることがわかった。
ちょっと注意せねばいけない。

応用編で勉強したら面白いかもしれない。参考URL
 [Swift] OSX でファイルを開く・保存するダイアログを開く
Swiftを使ったMac OS Xアプリの開発【Data Road偏】
Swiftのサンプルコードがさっぱり動かない(NSOpenPanel) [プログラミング]

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?