2021-06-21

SwiftUI 简明教程之自定义对齐方式

本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容。

Eul 是一款 SwiftUI & Combine 教程 App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈现给读者。笔者意在尽可能使用简洁明了的语言阐述 SwiftUI & Combine 相关的知识,使读者能快速掌握并在 iOS 开发中实践。

重写 alignmentGuide

SwiftUI 为我们提供了多种默认的对齐方式,如 .top,.bottom,.center 等。如下是将苹果的 logo 和 文字 "Apple" 对齐的代码:

HStack(alignment: .bottom) { Image(systemName: "applelogo") .font(.largeTitle) Text("Apple")}

如果我们想把文字 "Apple" 往上移动一些,换言之,文字的底部略高于于 logo 的底部。可以通过重写 alignmentGuide 实现:

HStack(alignment: .bottom) { Image(systemName: "applelogo") .font(.largeTitle) .alignmentGuide(.bottom, computeValue: { d in d[.bottom] - 5}) Text("Apple")}

computeValue 闭包中返回的是一个 ViewDimensions 结构体实例,它有 height、width 属性供我们使用,还可以通过下标获取指定的对齐方式。

上例我们简单演示了重写 alignmentGuide 的方法。当然,对于这种简单的情况,我们还可以使用 offset 实现:

HStack(alignment: .bottom) { Image(systemName: "applelogo") .font(.largeTitle) .offset(x: 0, y: 5) Text("Apple")}

自定义 alignmentGuide

VStack { HStack { Text("手机") Text("155********") } HStack { Text("电子邮箱") Text("xxxxxx@gmail.com") }}

如上是一个常见的界面,通常我们会使手机和邮箱右对齐(或者第二列的文字左对齐),通过系统默认的对齐方式,是无法实现的,我们需要自定义 alignmentGuide:

extension HorizontalAlignment { struct CustomAlignment: AlignmentID { static func defaultValue(in context: ViewDimensions) -> CGFloat {  return co......

原文转载:http://www.shaoqun.com/a/819627.html

跨境电商:https://www.ikjzd.com/

adore:https://www.ikjzd.com/w/2202

壹米滴答:https://www.ikjzd.com/w/2314

环球b2b:https://www.ikjzd.com/w/1762


本文为Eul样章,如果您喜欢,请移步AppStore/Eul查看更多内容。Eul是一款SwiftUI&Combine教程App(iOS、macOS),以文章(文字、图片、代码)配合真机示例(Xcode12+、iOS14+,macOS11+)的形式呈现给读者。笔者意在尽可能使用简洁明了的语言阐述SwiftUI&Combine相关的知识,使读者能快速掌握并在iOS开发中实践。重写ali
Badi:https://www.ikjzd.com/w/2454
和乔国际商务:https://www.ikjzd.com/w/2455
乌鲁木齐力争游客超千万 :http://www.30bags.com/a/409794.html
母亲把男孩带进女厕所是有争议的。孩子的性教育应该从几岁开始?:http://lady.shaoqun.com/a/354063.html
把车开到没人的地方做 男朋友在车里㖭我高潮:http://www.30bags.com/m/a/249698.html
writer:https://www.ikjzd.com/w/1280
运哪去网:https://www.ikjzd.com/w/2456
玉米地我帮公公满足 儿媳让爸爸玩个够:http://lady.shaoqun.com/m/a/246775.html
舌头伸进去里面吃小豆豆 使劲添啊添的流水了:http://lady.shaoqun.com/a/248217.html
顺德新世纪水上乐园什么时候开放?到晚上几点:http://www.30bags.com/a/447884.html
顺德新世纪水上乐园需要带什么?准备什么东西?:http://www.30bags.com/a/447885.html
龙江新世纪水上乐园开门时间?:http://www.30bags.com/a/447886.html

No comments:

Post a Comment