ios - 如何在 SwiftUI 中使用cornerRadius 为视图创建前导边框?
问题描述
所以我有一个看法
VStack(alignment: .leading) {
Text("Top text").font(.title2).bold()
Spacer()
Text("Bottom text")
}
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 5)
并且想要设置一个与其圆形轮廓相匹配的左色(例如,红色)边框。
我尝试添加:
.overlay(RoundedRectangle(cornerRadius: 20)
.frame(width: 2, height: nil, alignment: .leading), alignment: .leading)
确实绘制了左边框,但与圆形轮廓不匹配:
解决方案
这是一个可能方法的演示 - 在叠加层中使用掩码(还显示了如何使按钮可点击,如果卡中有一些按钮)
使用 Xcode 12.1 / iOS 14.1 测试
struct DemoView: View {
var body: some View {
VStack(alignment: .leading) {
Text("Top text").font(.title2).bold()
Spacer()
Button("Bottom text") {}
}
.padding()
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 5)
.overlay(
RoundedRectangle(cornerRadius: 10).fill(Color.red).mask( // << here !!
HStack {
Rectangle().frame(width: 10)
Spacer()
}
).allowsHitTesting(false)) // << make click-through
.frame(height: 200)
}
}
推荐阅读
- ef-core-2.2 - 如何让 EF Core 将 ValueGeneratedOnAddOrUpdate 属性标记为 IsTemporary
- javascript - 在请求调用中设置变量不会更新变量(返回值为'')
- python-2.7 - ImportError:没有名为 smtplib 的模块,使用 python2.7
- vb.net - 我的程序收到此错误消息。查询表达式“[ID]=”中的语法错误(缺少运算符)
- ios - swift,ios 12+中当前播放歌曲的MPMediaItem字段`lyrics`为空
- python-3.x - ImportError:没有名为“keras.layers.merge”的模块
- r - 合并两个 3 数据集后,名称列不会在 R 中按字母顺序排序
- sql - ORA-01476: SQL 百分比计算中的“除数等于零”
- hyperledger - 如何使用 Hyperledger Caliper 在 Hyperledger Composer 上测试我自己的业务网络
- ios - 为什么使用 NuGet 包 Plugin.AudioRecorder 在 iPhone 上播放静音?