ios - SwiftUI 中的左右填充(不是前导和尾随)
问题描述
SwiftUI 中的填充修饰符采用EdgeInsets
,例如
.padding(.leading, 8)
但是,只有前导和尾随的 EdgeInsets,而不是左右。这带来了一个问题,因为并非 RTL 语言中的所有内容都必须与 LTR 语言中的显示方式相反。
有没有办法实现与填充修饰符相同或相似的效果,无论语言的方向如何,它都会强制填充在左侧或右侧?
解决方案
这是可能方法的简化演示 - 使用Spacer
在每侧注入固定大小的扩展。
使用 Xcode 13 / iOS 15 准备和测试
enum Side: Equatable, Hashable {
case left
case right
}
extension View {
func padding(sides: [Side], value: CGFloat = 8) -> some View {
HStack(spacing: 0) {
if sides.contains(.left) {
Spacer().frame(width: value)
}
self
if sides.contains(.right) {
Spacer().frame(width: value)
}
}
}
}
使用演示
var body: some View {
TextField("Last Name", text: $nameLast)
.textFieldStyle(.roundedBorder)
.padding(sides: [.left], value: 20)
}
推荐阅读
- java - 使用符号撇号(')查询在java中获取参数值
- sql-server - 我缺少哪些显式权限会阻止表级别的有效 INSERT 权限?
- javascript - 这是什么意思:公共子
(params: { new(...args: any[]): T }): Observable - jquery - 当我根据用户的操作创建新脚本时,如何用逗号包装我的输入?
- watchkit - watchOS上CloudKit的WKRefreshBackgroundTask?
- xamarin - 活动没有通过 super.onresume 异常调用
- javascript - 通过带有索引的jquery ajax发送php数组并接收数组值
- algorithm - 将数字分成三组
- algorithm - 从 100 万个对象的列表中搜索
- c# - “内部”变量通过函数