SwiftUI-自定義修飾符

SwiftUI為我們提供了內(nèi)置的修飾符,如一系列的font(),background()和clipShape()。但是,我們也可以創(chuàng)建執(zhí)行特定操作的自定義修飾符。
例如,我們自定義一個(gè)項(xiàng)目中常用的文本,設(shè)置其字體大小、字重、顏色、背景色等。創(chuàng)建自定義修飾符需要遵循ViewModifier協(xié)議,實(shí)現(xiàn)其body方法

定義:
struct Title: ViewModifier {
    func body(content: Content) -> some View {
        content
            .font(.largeTitle)
            .foregroundColor(.white)
            .padding()
            .background(Color.blue)
            .clipShape(RoundedRectangle(cornerRadius: 10))
    }
}

使用:
Text("Hello World")
    .modifier(Title())

為了更便捷的使用,我們可以將實(shí)現(xiàn)的自定義修飾符擴(kuò)展為View的方法,便于調(diào)用

extension View {
    func titleStyle() -> some View {
        self.modifier(Title())
    }
}

我們現(xiàn)在可以像這樣使用修飾符:
Text("Hello World")
    .titleStyle()

one more thing:自定義修飾符不僅可以應(yīng)用其他現(xiàn)有修飾符,還可以根據(jù)需要?jiǎng)?chuàng)建新的視圖結(jié)構(gòu)。請(qǐng)記住的是,修飾符返回新對(duì)象而不是修改現(xiàn)有對(duì)象,因此我們可以創(chuàng)建一個(gè)將視圖嵌入堆棧并添加另一個(gè)視圖的對(duì)象。

自定義一個(gè)水印修飾符:
struct Watermark: ViewModifier {
    var text: String

    func body(content: Content) -> some View {
        ZStack(alignment: .bottomTrailing) {
            content
            Text(text)
                .font(.caption)
                .foregroundColor(.white)
                .padding(5)
                .background(Color.black)
        }
    }
}

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(Watermark(text: text))
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容