SwiftUI 使用 Image 的图片尺寸太大, 影响附近区域的点击

266 天前
 kopanya

SwiftUI 使用 Image 当中 ZStack 背景 容器设置大小, 但是图片尺寸太大, 影响到上下的点击区域问题. 代码如下

Button{

}label: {
Text("aaa")
}

ZStack {
      
      AImageView(mainob.bgPlay.song?.cover, "customized") 
          .scaledToFill()
          .frame(width: width , height: height)
          .clipped()
          
}.frame(width: width , height: height)

Button{

}label: {
Text("aaa")
}

1141 次点击
所在节点    iOS
6 条回复
okakuyang
265 天前
看不懂你写的,一般不都是最外层一个 VStack 包起来,你自己设置了宽高是什么
MakHoCheung
265 天前
可以用 .contentShape() 来修改 AImageView 点击区域
owen666
265 天前
你根本就没学懂 SwiftUI 。就在那里胡写。

ZStack 是叠加上层的,假设你的顶层是 VStack 的话,那么你两个 Button 是竖排,ZStack 摆在它们上面,你当然就不能点击啦。

正确的的做法是
VStack {
Button1
Button2
}
.background(AImageView())

不那么正确但是可用的做法是

ZStack {
AImageView()
VStack {
Button1
Button2
}
}
dmql
264 天前
#2 正解,.clipped()虽然表面看起来把 ImageView 的宽和高给裁切了,但不会对图片的点击范围产生影响,用.contentShape(Rectangle())把图片的点击范围包装一下就可以了。
kopanya
262 天前
@MakHoCheung 多谢指导
kopanya
262 天前
@dmql 是的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1019895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX