swift - 设置自定义背景形状
问题描述
我想要这样的东西:
我的代码在这里:
NavigationView {
VStack{
VStack(alignment: .leading){
Section{
Text("Bold ").font(.system(size: 18, weight: .bold))
+
Text("light").font(.system(size: 18, weight: .light))
}
Section{
Text("Monday 27 Apr").font(.system(size: 27, weight: .light))
}
}
Spacer()
}
.background(Color.green)
}
但它看起来像这样:
如何在第一张图像上应用背景并将内容放在左侧?
有没有我可以用来进行这种修改的工具?还是人们通常通过试错和手工来完成?
谢谢
解决方案
尝试使用 ZStack。您可以将背景设置为主要内容下方的视图,并且可以使用edgesIgnoringSafeArea(.all)
修饰符使该视图扩展到边缘。您可以在该 ZStack 中嵌套一个 ZStack,并将绿色背景叠加在您为制作该背景图案而创建的某个形状上。
ZStack(alignment: .leading) {
// ZStack {
Color.green
.edgesIgnoringSafeArea(.all)
// SomeWhiteShapeToMakeThatRoundedMask()
// .foregroundColor(.white)
// }
VStack(alignment: .leading) {
Section{
Text("Bold ").font(.system(size: 18, weight: .bold))
+
Text("light").font(.system(size: 18, weight: .light))
}
Section{
Text("Monday 27 Apr").font(.system(size: 27, weight: .light))
}
Spacer()
}.padding(.horizontal)
}
或者,您可以使用 GeometryReader 偏移圆形来获取容器大小:
ZStack(alignment: .leading) {
Color.white
.edgesIgnoringSafeArea(.all)
GeometryReader { geometry in
Circle()
.foregroundColor(.green)
.frame(width: geometry.size.width * 2)
.offset(x: geometry.size.width * -0.2 , y: geometry.size.height * -0.8)
}
VStack(alignment: .leading) {
Section{
Text("Bold ").font(.system(size: 18, weight: .bold))
+
Text("light").font(.system(size: 18, weight: .light))
}
Section{
Text("Monday 27 Apr").font(.system(size: 27, weight: .light))
}
Spacer()
}.padding(.horizontal)
}
推荐阅读
- c# - 如何用 antlr g4 C# 语法喂百灵?
- sql - 如何返回嵌套的 JSON?
- cassandra - cassandra 客户端查询和 cassandra 服务器端查询有什么区别以及它如何影响性能
- php - 错误语法错误:在 ionic 3 中的位置 0 处的 JSON 中的意外标记 <
- php - mysqli_fetch_assoc() 没有获取任何数据/获取空数据
- fullpage.js - fullpage.js:特定部分的正常滚动?
- atom-editor - 在原子编辑器中将选择转换为大写的键盘快捷键
- ruby-on-rails - 如何修复:ArgumentError:UTF-8 中的无效字节序列?
- amazon-web-services - CloudFormation 资源创建(如果不存在)
- javascript - Vuetify 扩展面板主体在测试环境中没有显示样式