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虽然好用,但也不能太过于依赖,多思考。

相关推荐
天桥吴彦祖2 天前
判断iOS如何监听手机屏幕是否锁屏
ios
东坡肘子2 天前
SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142
人工智能·swiftui·swift
敲代码的鱼3 天前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
时光足迹3 天前
uni-app 视频通话实战:康复师与患者视频问诊的 6 个致命 Bug 与解决方案
android·ios·uni-app
时光足迹3 天前
JPush UniApp UTS 插件完全参考手册:API、事件与厂商通道一网打尽
vue.js·ios·uni-app
时光足迹3 天前
极光推送全攻略(下):uni-app 代码实现与 iOS 排查实战
vue.js·ios·uni-app
时光足迹3 天前
极光推送全攻略(上):被iOS证书折磨了三天,我写了一份前端也能看懂的避坑指南
前端·ios·uni-app
编程范式4 天前
SwiftUI 中图片如何适配可用空间
ios
songgeb6 天前
启发式 UI 自动化:从线性剧本到每步读屏决策
ios·测试
神奇的程序员7 天前
开发了一个进阶版Apple健康
swiftui·apple·apple watch