SwiftUI の クリックできる View は、Opacity を 0 に設定すると、クリックできなくなりますが、どれくらいの値を設定しているとクリックできるのか調べてみました
Sponsor Link
環境&対象
以下の環境で動作確認を行なっています。
- macOS Catalina 10.15.7
- Xcode 12.2
- iOS 14.2
テストコード
以下のようなアプリ/テストコードでチェックしました。
テキストをクリックすると、上部の円が黄色に変わります。(しばらくすると戻ります)
Opacity を、ゼロに近づけていって、動作を確認しました。
example code
//
// ContentView.swift
//
// Created by : Tomoaki Yagishita on 2020/11/29
// © 2020 SmallDeskSoftware
//
import SwiftUI
struct ContentView: View {
@State private var opacity: Double = 1.0
@State private var circleColor = Color.white
var body: some View {
VStack {
Circle()
.fill(circleColor)
.frame(width: 100)
.overlay(Circle()
.strokeBorder(lineWidth: 3))
HStack {
Group {
Text("Hello, world!")
.opacity(opacity)
.onTapGesture {
DispatchQueue.main.async {
self.circleColor = .yellow
DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
withAnimation(.easeOut(duration: 1) ) {self.circleColor = .white} })
}
}
}
.border(Color.red)
.padding()
Text(" - Text ")
}
Slider(value: $opacity)
TextField("opacity", value: $opacity, formatter: ContentView.numFormat)
.padding()
Text("Opacity : \(opacity)")
.padding()
}
.padding()
}
}
extension ContentView {
static var numFormat: NumberFormatter = {
let numFormat = NumberFormatter()
numFormat.positiveFormat = "#.##############################" // # x 30
return numFormat
}()
}
1.0e-26 でもクリックできます
0.(25個の0)1 = 1.0e-26 つまり
0.00000000000000000000000001
の opacity を指定した Text もクリックすることができました。
0 ではクリックできません
もちろん、0 を指定するとクリックできません。
まとめ:Opacity 指定は、どれくらいまで クリックできるのか
Opacity 指定は、どれくらいまで クリックできるのか
- opacity に 1.0e-26 を指定してもクリックできる
- 厳密に、0 を指定するとクリックできない
- 数値計算を使って、クリックできなくしたいならば、気をつける必要があるかも(誤差で、1.0e-26 とかありそうです)
説明は以上です。
不明な点やおかしな点ありましたら、こちらまで。
Sponsor Link