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

相关推荐
ii_best3 小时前
安卓/ios开发辅助软件按键精灵小精灵实现简单的UI多配置管理
android·ui·ios·自动化
Digitally3 小时前
如何从 iPhone 中永久删除联系人
ios·iphone
库奇噜啦呼3 小时前
【iOS】Effective Objective-C第三章
ios·objective-c·cocoa
刘小哈哈哈4 小时前
iOS 支持毛玻璃效果修改模糊度
ios
Zender Han21 小时前
Flutter Bloc / Cubit 最新详解与实战指南(2026版)
android·flutter·ios
tangweiguo030519871 天前
iOS vs Android 开发对照手册
android·ios
weixin_443478511 天前
flutter组件学习之Cupertino 组件(iOS风格)
学习·flutter·ios
Andy_GF2 天前
iOS26 系统适配-直接隐藏 UIBarButtonItem 的 Liquid glass 效果
ios
wjm0410062 天前
ios学习路线-- swift基础2
学习·ios·swift