coiai Logo

【SwiftUI】画像を追加する機能と、プレビュー、そして削除する機能

こんにちは!今日は、SwiftUIで画像を選択する機能を作りました。下の画像のような感じです。

コードの名前はSelectImage.swiftです。

コードの全体像

import SwiftUI
import UniformTypeIdentifiers

struct SelectImage: View {
    @Binding var image: NSImage?
    @State private var isHovering = false
    
    var body: some View {
        // ここに色々なコードが入ります
    }
}

まず、import SwiftUIimport UniformTypeIdentifiersで必要なライブラリをインポートします。次に、SelectImageという名前のViewを作ります。このViewには2つの変数があります。@Binding var image: NSImage?は選択した画像を保持し、@State private var isHovering = falseはマウスが画像の上にあるかどうかをチェックします。

画像を選ぶ部分

Button("Select Image") {
    let panel = NSOpenPanel()
    panel.allowedContentTypes = [UTType.image]
    panel.allowsMultipleSelection = false
    if panel.runModal() == .OK {
        let url = panel.url
        self.image = NSImage(contentsOf: url!)
    }
}

“Select Image”というボタンを作ります。このボタンをクリックすると、画像を選ぶダイアログが開きます。選んだ画像はNSImageとしてimage変数に保存されます。

画像を表示する部分

if let img = image {
    ZStack {
        Rectangle()
            .fill(Color.gray)
            .frame(width: 44, height: 44)
            .cornerRadius(4)
        Image(nsImage: img)
            .resizable()
            .scaledToFit()
            .frame(width: 40, height: 40)
    }
}

選んだ画像は、四角形の枠内に表示されます。画像は自動的に枠に合わせてリサイズされます。

画像を削除する部分

Button {
    self.image = nil
} label: {
    Image(systemName: "xmark.circle")
        .foregroundColor(.white)
        .font(.system(size: 16, weight: .bold))
}
.disabled(image == nil)
.padding(2)
.background(Color.black)
.clipShape(Circle())
.opacity(isHovering ? 0.9 : 0)
.onHover { hovering in
    isHovering = hovering
}

画像の上にマウスを持っていくと、削除ボタンが現れます。このボタンを押すと、選んだ画像が削除されます。

まとめ

以上が、私が作ったSelectImage.swiftの解説です。このコードを使えば、SwiftUIで簡単に画像選択機能を追加することができます。皆さんもぜひ試してみてください。それでは、また次回!

投稿日: 2023年12月18日
カテゴリ: SwiftUI
タグ:
coiai

coiai

この記事もおすすめ

ポッドキャストを取った後Auditionですべきこと

ポッドキャストを取った後Auditionですべきこと

この記事はポッドキャストなどの音声コンテンツを取った後にAuditionで編集する方法について解説しています。 環境 やること 基本的に以下の4つの工程をすると、かなりクオリティアップにつながります! ノイズリダクション 無音部分を選択します。開始地点をi, 終わりをo キーを押すと選択できます。選択できたらエフェクト→ノイズリダクション/リストア→ノイズプリントをキャプチャを押します。 続いて、全体を選択します。cmd, a で全選択になります。エフェクト→ノイズリダクション/リストア→ノイズリダクションを選択します。 以下のようなパネルが表示されうので、ノイズのみをきたりして、削減ちを調整して、良い感じになったら適応ボタンを押します。 シングルバンドコンプレッサ 左のパネルのエフェクトトラックから▶️ボタンを押し、振幅と圧縮→シングルバンドコンプレッッサを選択します。 選択すると下記のようなパネルが開きます。それぞれ、 といった意味があります。設定値は下記画像のようにしています。 設定がめんどくさい場合はプリセットからラジオレベラーを選択してください。 EQ(声をクリアにする) パラメトリックイコライザーを使用します。エフェクト→フィルターとイコライザ→パラメトリックイコライザーを選択します。 私の場合は下記のように設定しています。 無音カット エフェクト→診断→無音をカットをすると左パネルに診断が表示されます。 効果を無音を削除、プリセットをポッドキャストにするとちょうどよくなると思います。設定したら、スキャンボタンを教えて、全て削除で無音がカットされます。 かなりカットされてしまうので、短いCM等に使うのはありかなという感じです。 参考 Adobe 無音カット https://helpx.adobe.com/jp/audition/using/strip-silence.html

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。