macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

CGDataConsumerCreate

INDEX>
https://cocoaapi.hatenablog.com/entry/CoreGraphics/index:CoreGraphics>
CGDataConsumer - macOS/iOS API解説>

-()xxxxx:

解説

CGDataConsumerCreate は、Core Graphics の CGDataConsumerRef を作成するための関数で、PDFデータや画像データをカスタムのデータストリームに書き込む際に使用されます。
一般的な用途として、PDFコンテンツをメモリやファイルに出力する際に利用されます。

引数


返り値


クラス

Xxxxxxxxxx

使用可能

OS X 00.00以降
iOS 0.0以降

参照

サンプル

//
//  ContentView.swift
//  CGDataConsumerCreate
//
//  Created  on 2025/02/24.
//
import SwiftUI
import PDFKit

struct PDFViewer: NSViewRepresentable {
    let pdfData: Data

    func makeNSView(context: Context) -> PDFView {
        let pdfView = PDFView()
        pdfView.document = PDFDocument(data: pdfData)
        pdfView.autoScales = true
        return pdfView
    }

    func updateNSView(_ nsView: PDFView, context: Context) {}
}

struct ContentView: View {
    @State private var pdfData: Data?

    var body: some View {
        VStack {
            if let pdfData = pdfData {
                PDFViewer(pdfData: pdfData)
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
            } else {
                Text("PDF を生成するにはボタンを押してください")
                    .padding()
            }

            Button("PDF を生成") {
                pdfData = generatePDF()
            }
            .padding()
        }
        .frame(width: 600, height: 600)
    }

    func generatePDF() -> Data {
        let pdfData = NSMutableData()

        // CGDataConsumer を作成(メモリに書き込む)
        guard let dataConsumer = CGDataConsumer(data: pdfData) else {
            print("Failed to create CGDataConsumer")
            return Data()
        }

        var mediaBox = CGRect(x: 0, y: 0, width: 500, height: 500)
        guard let pdfContext = CGContext(consumer: dataConsumer, mediaBox: &mediaBox, nil) else {
            print("Failed to create PDF context")
            return Data()
        }

        // PDFページの開始
        pdfContext.beginPDFPage(nil)

        // 四角形の描画
        pdfContext.setFillColor(NSColor.red.cgColor)
        pdfContext.fill(CGRect(x: 100, y: 100, width: 300, height: 300))

        // テキストの描画
        let text = "Hello, PDF!"
        let attributes: [NSAttributedString.Key: Any] = [
            .font: NSFont.systemFont(ofSize: 24),
            .foregroundColor: NSColor.black
        ]
        let attributedText = NSAttributedString(string: text, attributes: attributes)
        attributedText.draw(at: CGPoint(x: 150, y: 400))

        // PDFページの終了
        pdfContext.endPDFPage()
        pdfContext.closePDF()

        print("PDF Generated!")
        return pdfData as Data
    }
}


struct MyMacApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .windowStyle(.automatic)
        .commands {
            CommandGroup(replacing: .newItem) {
                Button("新しい PDF") {
                    // Optional: 新規 PDF 生成処理
                }
            }
        }
    }
}

TextField

INDEX>SwiftUI > Views and Controls

テキストフィールド

Swift

struct TextField<Label> where Label : View

解説

A view that displays one or more lines of read-only text.

クラス

使用可能

参照

更新時のバージョン

関連記事(外部サイト)

例文


Swift

@State private var name = ""
    
    var body: some View {
        VStack {
            TextField("your name?", text: $name)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .padding()
            Text("Hello, World!")
                       .frame(maxWidth: .infinity, maxHeight: .infinity)
            
        }
        
        
    }

Views and Controls

INDEX>SwiftUI > Views and Controls

Overview
ビューとコントロールは、アプリケーションのユーザーインターフェースの視覚的な構成要素です。
これらを使用して、アプリのコンテンツを画面に表示します。
ビューは、テキスト、画像、形状、カスタム図面、およびこれらすべての組み合わせを表します。
コントロールにより、ユーザーのプラットフォームとコンテキストに適応する一貫したAPIとの対話が可能になります。

視覚的な関係と階層を指定するコンテナーを使用してビューを結合します。
モディファイア(修飾子)と呼ばれるメソッドを使用して、組み込みビューおよびアプリ用に作成したビューの表示、動作、対話性をカスタマイズします。


ビューとコントロールにモディファイヤを適用して、次のことを行います。

ビューのサイズ、位置、および外観の属性を制御します。

タップ、ジェスチャー、その他のユーザー操作に応答します。

ドラッグアンドドロップ操作をサポートします。

アニメーションとトランジションをカスタマイズします。

スタイル設定とその他の環境データを設定します。

ビューとコントロールの使用方法の詳細については、ヒューマンインターフェイスガイドラインを参照してください。


トピック
必須

プロトコルビュー
SwiftUIビューを表すタイプ。


ビューの作成と結合
このチュートリアルでは、お気に入りの場所を発見して共有するためのiOSアプリであるランドマークの構築について説明します。 まず、ランドマークの詳細を示すビューを作成します。

UIコントロールの操作
ランドマークアプリでは、ユーザーは自分の個性を表現するプロファイルを作成できます。 ユーザーがプロフィールを変更できるようにするには、編集モードを追加して、設定画面をデザインします。

Text

struct Text
1行以上の読み取り専用テキストを表示するビュー。

struct TextField

TextField - Cocoa API解説(macOS/iOS)
編集可能なテキストインターフェイスを表示するコントロール

struct SecureField

ユーザーがセキュリティ入力を行うテキストコントロール

struct Font

An environment-dependent font.

Images

struct Image

A view that displays an environment-dependent image.

Buttons

struct Button

A control that performs an action when triggered.

struct NavigationLink
A button that triggers a navigation presentation when pressed.

struct MenuButton
A button that displays a menu containing a list of choices when pressed.

struct EditButton
A button that toggles the edit mode for the current edit scope.

struct PasteButton
A system button that triggers reading data from the pasteboard.

Value Selectors
struct Toggle
A control that toggles between on and off states.

struct Picker
A control for selecting from a set of mutually exclusive values.

struct DatePicker
A control for selecting an absolute date.

struct Slider
A control for selecting a value from a bounded linear range of values.

struct Stepper
A control used to perform semantic increment and decrement actions.

Supporting Types
struct ViewBuilder
A custom parameter attribute that constructs views from closures.

protocol ViewModifier
A modifier that you apply to a view or another view modifier, producing a different version of the original value.

SwiftUI

INDEX>SwiftUI

クラス

Essentials

SwiftUIでアプリを作成する方法を学ぶ
SwiftUIとXcodeを使用してアプリを作成する方法を学ぶには、一連のガイド付きチュートリアルを行ってください。


ユーザーインターフェース

ビューとコントロール
コンテンツを画面に表示し、ユーザーの操作を処理します。

ビューレイアウトと表示

スタック内のビューを組み合わせ、ビューのグループとリストを動的に生成し、ビューのプレゼンテーションと階層を定義します。

描画とアニメーション

色、形、影でビューを装飾し、ビューステート間のアニメーション化された遷移をカスタマイズします。

Framework Integration

Integrate SwiftUI views into existing apps, and embed AppKit, UIKit, and WatchKit views and controllers into SwiftUI view hierarchies.

Data and Events

State and Data Flow
Control and respond to the flow of data and changes within your app’s models.

Gestures

Define interactions from taps, clicks, and swipes to fine-grained gestures.

Previews in Xcode

Previews
Generate dynamic, interactive previews of your custom views.






maximumExtendedDynamicRangeColorComponentValue

INDEX>AppKit>NSScreen

拡張ダイナミックレンジ(EDR)値

Swift

open func canRepresent(_ displayGamut: NSDisplayGamut) -> Bool

解説

拡張ダイナミックレンジ(EDR)値

返り値

Swift

open var maximumExtendedDynamicRangeColorComponentValue: CGFloat { get }

引数

フレームワーク

ApplicationKit

クラス

NSScreen

使用可能

10.11-

参照

更新時のバージョン

OS X 10.14.5
Swift4.0

関連記事(外部サイト)

例文


Swift4.0

    @IBAction func function015(_ sender: Any) {
        let screenArray : [AnyObject] = NSScreen.screens
        for value in screenArray {
            print("value = \(Float(value.maximumExtendedDynamicRangeColorComponentValue)) ")
        }
    }

canRepresent

INDEX>AppKit>NSScreen

スクリーンでサポートされる色深度を返します

Swift

open func canRepresent(_ displayGamut: NSDisplayGamut) -> Bool

解説

ガモットマッピング可能かどうかを返します。

返り値

色深度の配列
Swift

open func canRepresent(_ displayGamut: NSDisplayGamut) -> Bool

引数

フレームワーク

ApplicationKit

クラス

NSScreen

使用可能

10.12

参照

更新時のバージョン

OS X 10.14.5
Swift4.0

関連記事(外部サイト)

developer.apple.com


例文


Swift4.0

@IBAction func function008(_ sender: Any) {
        let screenArray : [AnyObject] = NSScreen.screens
        for value in screenArray {
            let result : Bool = value.canRepresent(.sRGB)
            if (result){
                print("YES")
            }else{
                print("NO")
            }
        }
    }