SwiftUI中修饰符的顺序直接影响视图最终效果

事情是这样的,我希望图片的底部有一条带背景的文字,大致像这个图

但是我写的控件一直只有文字有背景,不能铺满一整条,代码如下

objc 复制代码
var body: some View {

        VStack(alignment: .leading, spacing: 5) {

            ZStack(alignment: .bottomLeading) {

                KFImage(URL(string: product.coverUrl))

                    .resizable()

                    .aspectRatio(1/1.2, contentMode: .fit)

                    .frame(maxWidth: .infinity)

                    .cornerRadius(4)

                Text("结束时间 2999-99-99")

                    .padding(3)

                    .foregroundColor(.white)

                    .background(Color.black.opacity(0.5))

                    .frame(maxWidth: .infinity, alignment: .leading)
                    

            }
      }
}

实际效果:

然后就去问AI,AI给的结果如下

但是就算我把AI代码原原本本拷过来,任然是我截图的效果,为了这个问题一直问AI浪费了好一阵子时间。 然后我突然想到官方关于padding()前后作用效果不同,突然想到我这也是同样的道理。

实际上这就是我按着OC思维惯性来开发UI,不理解 SwiftUI 中至关重要的知识点:

修饰符的顺序直接影响视图最终效果
修饰符的顺序直接影响视图最终效果
修饰符的顺序直接影响视图最终效果

只要我替换.frame和.background顺序就能实现我需要的效果了

并且AI虽然好用,但也不能太过于依赖,多思考。

相关推荐
麦客奥德彪1 天前
客户端 Trace Benchmark 体系设计
ios·数据分析
Digitally2 天前
6 种简易方法轻松连接 iPad 与电脑
ios·电脑·ipad
2501_915921432 天前
uni-app一键生成iOS安装包并上传TestFlight全流程
android·ios·小程序·https·uni-app·iphone·webview
sp42a2 天前
如何在 NativeScript 中使用 iOS 的 Metal 着色器
ios·着色器·nativescript
Mr_CrazyPeter2 天前
iONSPlayer 1.1.1版本发布
游戏·ios·模拟器
秋雨梧桐叶落莳2 天前
iOS——UI入门
ui·ios·cocoa
zhensherlock3 天前
Protocol Launcher 系列:Agenda 优雅组织你的想法与日程
javascript·macos·ios·typescript·node.js·mac·ipad
Rhys..3 天前
webdriveragent setup教程
ios
用户79457223954133 天前
【SnapKit】优雅的 Swift Auto Layout DSL 库
swiftui·swift
报错小能手3 天前
ios开发方向——swift内存基础
开发语言·ios·swift