iOS SwiftUI-問題1 Button背景透明無法點擊


Posted by John on 2021-02-02

  1. 發生狀況,ZStack內的Color.clear是透明色時,不佔據任何點擊範圍,
    因此該Button點擊範圍為Text的文字長度
    此問題會導致點擊的範圍只能點在文字上面
    因此如果Button寬度是200,文字寬度只有100,則點擊範圍只有在100的文字上
    如果點擊在文字外,將無法點擊
     Button(action: {
             print("click")
     }, label: {
         ZStack {
             Color.clear
             Text("1234567")
                 .foregroundColor(contentIndex == index ? Color("blue_2") : Color("gray_5"))
                 .padding()
         }
     })
    
  2. 解決方式,在Color.clear用GeometryReader包住,
    取得Color.clear的Size
    然後Color.clear設定自定義點擊區域
    設定後,此Color.clear將是Button的寬高的點擊範圍
    不會因為設定成透明色而無法點擊
     Button(action: {
             print("click")
     }, label: {
         ZStack {
             GeometryReader { geometry in
                 Color.clear.contentShape(Path(CGRect(origin: .zero, size: geometry.size)))
             }
             Text(contentArrayTemp[index].id ?? "")
                 .foregroundColor(contentIndex == index ? Color("blue_2") : Color("gray_5"))
                 .padding()
         }
     })
    

##Swift #iOS #XCode #軟體設計 #電腦程式 #SwiftUI







Related Posts

[Week2] 給自己看的 JavaScript 筆記 - 迴圈、函式、其他觀念

[Week2] 給自己看的 JavaScript 筆記 - 迴圈、函式、其他觀念

【Day07】幫 Youtube 影片下載程式添加小功能

【Day07】幫 Youtube 影片下載程式添加小功能

[day 01] this & bind: 你不能不知道的

[day 01] this & bind: 你不能不知道的


Comments