SwiftUI 中自定义 modifier

简介: 在 Swift UI 中,自定义 Modifier 是一种强大的方式,可以让你轻松地封装和重用视图的样式和行为。在本文中,我们将探讨如何使用自定义 Modifier ,以便在应用程序中保持一致的外观和风格。

SwiftUI 中自定义 modifier

在 Swift UI 中,自定义 Modifier 是一种强大的方式,可以让你轻松地封装和重用视图的样式和行为。在本文中,我们将探讨如何使用自定义 Modifier ,以便在应用程序中保持一致的外观和风格。

import SwiftUI

// 自定义 modifier

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

extension View {
    
   func tittleStyle() -> some View {
    
       modifier(Tittle());
   }

   func waterMark(with text: String) -> some View {
    
       modifier(WaterMark(text: text))
   }
}

struct WaterMark : ViewModifier {
    
   var text : String;
   func body(content : Content) -> some View {
    
       ZStack(alignment: .bottomTrailing){
    
           content
           Text(text)
               .foregroundColor(Color.gray)
               .padding()
               .background(Color.black)

       }
   }
}



struct ModifierUIView: View {
    
   var body: some View {
    
//        Text("Hello, World!")
//            .tittleStyle();
       Color.blue
           .frame(width: 300, height: 300)
           .waterMark(with: "starzyn")
   }
}

struct ModifierUIView_Previews: PreviewProvider {
    
   static var previews: some View {
    
       ModifierUIView()
   }
}

在上面的代码中,我们首先创建了一个名为 TittleWatermark 的自定义 Modifier。

Tittle实现的功能就是可以把一个 Text 组件变成标题

WarterMark 实现的功能就是在组件的右下角加上一个水印

然后,我们通过在 View 的扩展中添加 tittleStylewaterMark 方法来应用这个修改器。

最后,我们在 ModifierUIView 中直接使用就可以了

通过创建和使用自定义 Modifier,我们可以在 Swift UI 中轻松地实现主题功能,以确保应用程序中的视图保持一致的外观和风格。自定义 Modifier 不仅可以用于外观样式,还可以用于添加特定的行为和功能。这种模块化的方法可以帮助我们更有效地管理和维护应用程序的视图层级结构。

相关文章
SwiftUI—使用Text视图创建漂亮的富文本
SwiftUI—使用Text视图创建漂亮的富文本
1239 0
SwiftUI—使用Text视图创建漂亮的富文本
|
7月前
|
iOS开发 UED 开发者
UIControl 功能和用法
UIControl 功能和用法
|
8月前
|
算法 C++ UED
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
QML布局:如何恰当设置间隙与合理布局 (QML Layout: Proper Spacing and Alignment)
1286 0
|
JSON 数据格式
easyUI 的combobox如何获取除valueField和textField外的三个值
easyUI 的combobox如何获取除valueField和textField外的三个值
|
Swift 容器
SwiftUI 中自定义 container
自定义容器是在 Swift UI 中实现复杂布局和视图组合的强大工具。通过自定义容器,我们可以将一组视图组织在一起,以创建可重用的 UI 元素,同时保持一致的外观和行为。在本文中,我们将探讨如何使用自定义容器来实现一个主题,并深入了解其设计和实现细节。
|
XML Android开发 数据格式
什么是attr,实现自定义view
Attr :单词的意思是属性的意思(但是这里的属性和xml控件中的属性不是一个意思,不要混淆!Attr说是属性只是说的是它的单词的意思是属性),我们是通过Attr文件来定义我们控件中所使用的属性的
152 1
什么是attr,实现自定义view
|
程序员 iOS开发 开发者
iOS开发:设置UICollectionView不同大小的item的方法
在iOS开发过程中,UICollectionView的使用作为iOS开发者来说都不陌生,但是要想完美的玩转UICollectionView的所有使用的技巧,还是需要了解很多的。本篇博文来分享一下关于UICollectionView设置不同大小item的方法,为的是迎合产品的需求,方便记录为了以后查看使用,分享给有需要的人。
992 0
iOS开发:设置UICollectionView不同大小的item的方法
|
开发者 iOS开发
SwiftUI—创建第一个SwiftUI项目
SwiftUI—创建第一个SwiftUI项目
908 0
SwiftUI—创建第一个SwiftUI项目
|
C#
用 Expression Blend 创建酷炫的 Button
原文:用 Expression Blend 创建酷炫的 Button 原文:Creating “Cool” Buttons with Expression Blend Author: Alex 在本文中,我们将考虑在Expression Blend用几种方法来创建酷炫的凝胶状按钮。
1150 0
|
前端开发 容器
【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel)
原文:【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid & Canvas &StackPanel &Wrappanel)   写这篇文章前,特意在百度搜索了一下,发现目前网上介绍布局的文章不多,质量也不是很高。
1008 0