coiai Logo

【SwiftUI】俺はただViewをPNGで書き出しただけなんだ

MacOSでViewをPNGで書き出しただけ。

結構大変だったのでここに足跡を残しておこうと思う。試行錯誤もあったけれど、今はただ疲れたので完成したコードだけ載せておく。いろんなサイト様を参考にしたので、少し寝たら参考リンクを貼ろうと思う。

以下コード

//
//  CanvasView.swift
//  FolderCustomizer
//
//  Created by coiai on 2023/12/15.
//

import SwiftUI

struct CanvasView: View {
    @State private var inputText = ""
    @State private var presented = true
    @State private var folderColor: FolderColorPicker.FolderColor = .Blue
    
    var body: some View {
        VStack {
            CanvasToSave(inputText: $inputText, folderColor: $folderColor)
        }
        .inspector(isPresented: $presented) {
            Button("Save Image") {
               
            }

            Form {
                Section("Text") {
                    TextField("Text", text: $inputText)
                        .font(.body)
                        .padding()
                }
                Section("Folder Color") {
                    FolderColorPicker(folderColor: $folderColor)
                }
            }
            .inspectorColumnWidth(min: 200, ideal: 300, max: 400)
            .toolbar {
                Spacer()
                Button {
                    presented.toggle()
                } label: {
                    Label("toggle inspector", systemImage: "info.circle")
                }
            }
            Spacer()
        }
    }
}

struct CanvasToSave: View {
    @Binding var inputText: String
    @Binding var folderColor: FolderColorPicker.FolderColor
    
    var body: some View {
        Canvas { context, size in
            let rect = CGRect(origin: .zero, size: size).insetBy(dx: 5, dy: 5)
            // キャンバスの中心の点
            let midPoint = CGPoint(x: size.width / 2, y: size.height / 2)
            
            
            let text = Text(inputText)
                .font(.largeTitle)
                .fontWeight(.bold)
                .foregroundColor(.white)
            
            context.draw(text, at: midPoint, anchor: .center)
            context.blendMode = GraphicsContext.BlendMode.softLight
            
            let image = Image(folderColor.rawValue)
            context.draw(image, in: rect.insetBy(dx: 0, dy: 0))
        } symbols: {
            RotateObjView()
                .tag(0)
        }
        .frame(width: 512, height: 512)
    }
}

#Preview {
    CanvasView()
}
投稿日: 2023年12月16日
カテゴリ: 未分類
タグ:
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、本番運用まで伴走します。まずはお気軽にご相談ください。

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