SwiftUI-3 保持内置视图的自适应大小

这篇具有很好参考价值的文章主要介绍了SwiftUI-3 保持内置视图的自适应大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Keep your app’s view layouts fluid on any device for each type of content your app displays.

在任何设备上,针对应用程序显示的每种内容,保持应用程序的视图布局流畅。

Text and symbols

在定义应用程序布局时,文本(Text)和符号(Symbols)在向人们传达信息方面起着核心作用,比如在导航链接、按钮标签和表格等方面。显示信息或标记其它元素的文本和符号需要有足够的空间来显示其内容。

Text

Text(文本)视图显示只读文本,它的内容可以是一个短字符串(Short String),也可以显示更长的字符串(Longer String)。

在布局(Layout)中声明Text View时,使用Font属性为系统提供有关文本的语意信息,而由系统选择字体和大小,例如,系统会设置具有标题(Title)字体的文本比具有正文(body)或说明(caption)字体的文本更突出。

// “Hamlet”显示将比“by William Shakespeare”更突出
Text("Hamlet")
    .font(.largeTitle)
Text("by William Shakespeare")
    .font(.caption)
    .italic()

文本视图可以通过换行或截断来调整某些空间限制,单不会更改字体大小以适应其理想大小小于或大于可用空间的情况。

For more information about localization, see Preparing Views for Localization. For guidance about supporting Dynamic Type, see Applying Custom Fonts to Text.

关于本地化的更多信息,请参见本地化标准视图。有关支持动态文字的指南,请参阅将自定义字体应用于文本。

Symbols

符号(Symbols),就像SF Symbols提供的图标,可以表示常见的应用程序功能,例如文件夹、收藏夹的心形或访问相机的相机图标。有效的符号简化了应用程序的用户界面,并且很容易被使用你的应用程序的人识别。您可以使用SwiftUI中提供的标准视图修改器来自定义它们的颜色和大小。即使您在Image中指定了系统或自定义元件,也可以将SF Symbols元件视为文本。要调整符合的大小和粗细,请指定[Font](Apple Developer Documentation,就像您在Text中做的那样。

// 示例使用HStack创建一行三个图像视图,这些视图显示SF元件中的图标
HStack {
    Image(systemName: "folder.badge.plus")    // 带加号的文件夹
    Image(systemName: "heart.circle.fill")    // 圆形包含的心形
    Image(systemName: "alarm")                // 闹钟
}
.symbolRenderingMode(.multicolor)             // 符号渲染模式
.font(.largeTitle)                            // 字体

Labels

要同时使用文本和符号来表示应用程序中的单个元素,可以使用Label。标签负责匹配其标题和图标大小及其对齐方式。

// 示例定义了一个标签,将图书的SF符号和文本组合在一起
Label("Favorite Books", systemImage: "books.vertical")
    .labelStyle(.titleAndIcon)    // 标签风格为显示标题和图标
    .font(.largeTitle)            // 字体设置为largeTitle

Controls

用于和用户进行交互的视图应具有离散的大小,以便在同一类型的多个元素一起显示时保持一致性。Controls(控件)也需要足够大,以便人们可以准确的点击或轻按。可以使用View Modifiers(视图修改器)来选择对应的尺寸。例如可以使用controlSize(_:)来使控件变小或变大,也可以使用progressViewStyle(_:)修饰符来为进度条选择线性或圆形外观。

// 示例显示具有不同controlSize值的Picker和Buton
VStack {
    HStack {
        Picker("Choice", selection: $choice) {
            choiceList()
        }
        Button("OK") {
            applyChanges()
        }
    }
    .controlSize(.mini)
    HStack {
        Picker("Choice", selection: $choice) {
            choiceList()
        }
        Button("OK") {
            applyChanges()
        }
    }
    .controlSize(.large)
}

除了MenuLink这样的通用控件,还有像EditButtonColorPicker这样的专用视图。建议使用这些视图来提供熟悉的UI元素,而不是创建需要维护的自定义控件。要浏览这些内置视图的更多内容,请参见Controls and Indicators。

Images and shapes

Graphical elements, such as images and shapes, can add a level of visual enhancement for your app.

图形元素,如图像和形状,可以为您的应用程序添加一定程度的视觉增强。

Images

Image用于显示照片和其它丰富的图形。默认情况喜爱,图像以资源的原始大小显示。可以使用resizable(capInsets:resizingMode:)scaledToFit()scaledToFill()之类的修改器以将图像缩放到可用空间。

Image("Yellow_Daisy")
    .resizable()
    .scaledToFit()

如果是从服务器访问图片资源,可以使用AsyncImage来处理下载,并同时保持应用程序的响应。

有关Image的详细信息,请参阅Fitting Images into Available Space。

Shapes

SwiftUI提供了几种常见的形状和修饰符老更改它们的大小、颜色、外观或其它方面。可以使用单个形状或多个形状的组合来创建背景、边框或其它视觉元素。可以使用像frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:)这样的修饰器来定义形状的大小,或者允许它填充所有的可用空间。

// 示例显示水平排列的三种不同形状
HStack {
    Rectangle()                        // 正方形                                        
        .foregroundColor(.blue)        // 蓝色
    Circle()                           // 圆形
        .foregroundColor(.orange)      // 橘色
    RoundedRectangle(cornerRadius: 15, style: .continuous)    // 圆角矩形
        .foregroundColor(.green)                              // 绿色
}
.aspectRatio(3.0, contentMode: .fit)   // 修饰HStack的宽度是高度的3倍

有关组成形状的多种可能性的示例,请参阅Drawing Paths and Shapes。文章来源地址https://www.toymoban.com/news/detail-796816.html

到了这里,关于SwiftUI-3 保持内置视图的自适应大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 万物皆可长按:SwiftUI 5.0(iOS 17)极简原生实现任意视图长按惯性加速功能

    在 SwiftUI 中与视图进行各种花样交互是 App 具有良好体验不可或缺的一环。 比如,我们希望按钮能在用户长按后产生惯性加速度行为,并想把这一行为扩展到 SwiftUI 中的任意视图中去。 以前,要想实现任意视图的长按加速,我们需要自己写额外代码,费时又费力。 不过,从

    2024年02月13日
    浏览(42)
  • swift - 如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI、Xcode 11 Beta 5)

    我正在尝试实现一个 View ,该 View 可以在内容数组的大小发生变化时更改显示项目的数量(由 ForEach 循环创建),就像购物应用程序可能会在用户下拉刷新后更改其可用项目的数量一样 这是我到目前为止尝试过的一些代码。如果我没记错的话,这些适用于 Xcode beta 4,但适用于

    2024年02月14日
    浏览(41)
  • PyQt5:窗口大小根据屏幕大小自适应调整

     

    2024年02月12日
    浏览(53)
  • UE4贴图自适应屏幕大小

    游戏开发中,不同屏幕下的分辨率不同,模型/物品被拉伸之后贴图也会随之拉伸。 如果需要在不同比例下实现贴图真实大小不变(以下简称为自适应),需要对UV进行缩放处理之后再取得对应贴图的颜色。 本文提供一种能够实现不同设备下面贴图的大小不变的方法,主要是

    2024年02月09日
    浏览(39)
  • PyQt5实现UI自适应屏幕大小且可缩放

    PyQt5实现UI自适应屏幕大小且可缩放 在开发GUI界面的过程中,为了让用户能够在不同尺寸屏幕下都有好的体验,我们需要实现UI自适应屏幕大小的功能。而PyQt5提供了很多方法和工具来达到这个目的。 下面是一个简单的例子,展示如何使用PyQt5来实现UI自适应屏幕大小的功能:

    2024年01月16日
    浏览(36)
  • 【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建TabBar

    SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 + Xcode14 + MacOS12.6 + iPhone Simulator iPhone 14 Pro Max 使用SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建TabBar - 效果 一、运行效果 二、项目结构图

    2024年02月08日
    浏览(40)
  • 【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar

    SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 + Xcode14 + MacOS12.6 + iPhone Simulator iPhone 14 Pro Max 使用SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar - 效果 一、运行效果 二、项目结构图

    2024年02月08日
    浏览(42)
  • SwiftUI的优缺点

    2019年WWDC大会上,苹果在压轴环节向大众宣布了基于Swift语言构建的全新UI框架——SwiftUI,开发者可通过它快速为所有的Apple平台创建美观、动态的应用程序。推荐大量使用struct代替类。 SwiftUI 就是⼀种声明式的构建界面的用户接口工具包。 SwiftUI使用声明式的语法构建UI,我们

    2024年02月13日
    浏览(55)
  • SwiftUI-基础

    Main函数与App结构体的绑定,遵循App协议 兼容UIApplicationDelegate Swift 结构体与类的构造函数 遵守View协议,定义View结构体 遵守PreviewProvider协议,定义Previews结构体 VStack - 纵向布局 HStack - 横向布局  Text - 文本 Button - 按钮 Image - 图像  TextField - 文本输入 ScrollView - 滚动视图  Lis

    2024年02月15日
    浏览(34)
  • SwiftUI(4)

    目录 一、视图大小调整: 1. .frame(width:,height:) 2. .clipped() 3. .resizable() 4. .aspectRatio() 5.GeometryReader 二、滚动视图 1.frame(maxWidth: .infinity) 2.init 三、导航连接 四、路径 五、SwiftUI中新地图框架MapKit 1.使用的基本步骤: 2.地图交互 3.地图样式 4.地图控件 Map(scope: mapScope) { ... } MapCompa

    2024年04月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包