change button down effect for onScreenButtonView
This commit is contained in:
1 parent
f1811ca53d
commit
141c9ee2ab
1 file changed
+25
-30
@@ -24,7 +24,7 @@ import UIKit
|
|||||||
// private let originalBackgroundColor: UIColor
|
// private let originalBackgroundColor: UIColor
|
||||||
private var storedLocation: CGPoint = .zero
|
private var storedLocation: CGPoint = .zero
|
||||||
private let minimumBorderAlpha: CGFloat = 0.19
|
private let minimumBorderAlpha: CGFloat = 0.19
|
||||||
|
private var defaultBorderColor: CGColor = UIColor(white: 0.2, alpha: 0.3).cgColor
|
||||||
|
|
||||||
@objc init(keyString: String, keyLabel: String) {
|
@objc init(keyString: String, keyLabel: String) {
|
||||||
self.keyString = keyString
|
self.keyString = keyString
|
||||||
@@ -63,13 +63,15 @@ import UIKit
|
|||||||
self.backgroundAlpha = 0.5
|
self.backgroundAlpha = 0.5
|
||||||
}
|
}
|
||||||
|
|
||||||
var borderAlpha = 1.5 * self.backgroundAlpha
|
// setup default border from self.backgroundAlpha
|
||||||
|
var borderAlpha = 1.15 * self.backgroundAlpha
|
||||||
if(borderAlpha < minimumBorderAlpha){
|
if(borderAlpha < minimumBorderAlpha){
|
||||||
borderAlpha = minimumBorderAlpha
|
borderAlpha = minimumBorderAlpha
|
||||||
}
|
}
|
||||||
|
defaultBorderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
||||||
|
self.layer.borderColor = defaultBorderColor
|
||||||
|
|
||||||
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with onScreen controller layer opacity
|
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with onScreen controller layer opacity
|
||||||
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc public func resizeButtonView(){
|
@objc public func resizeButtonView(){
|
||||||
@@ -119,18 +121,21 @@ import UIKit
|
|||||||
label.translatesAutoresizingMaskIntoConstraints = false // enable auto alignment for the label
|
label.translatesAutoresizingMaskIntoConstraints = false // enable auto alignment for the label
|
||||||
|
|
||||||
self.translatesAutoresizingMaskIntoConstraints = true // this is mandatory to prevent unexpected key view location change
|
self.translatesAutoresizingMaskIntoConstraints = true // this is mandatory to prevent unexpected key view location change
|
||||||
var borderAlpha = 1.5 * self.backgroundAlpha
|
|
||||||
|
// reset to default border
|
||||||
|
self.layer.borderWidth = 1
|
||||||
|
var borderAlpha = 1.15 * self.backgroundAlpha
|
||||||
if(borderAlpha < minimumBorderAlpha){
|
if(borderAlpha < minimumBorderAlpha){
|
||||||
borderAlpha = minimumBorderAlpha
|
borderAlpha = minimumBorderAlpha
|
||||||
}
|
}
|
||||||
// if(self.backgroundAlpha * )
|
defaultBorderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
||||||
self.layer.borderColor = UIColor(white: 0.2, alpha: borderAlpha).cgColor
|
self.layer.borderColor = defaultBorderColor
|
||||||
self.layer.borderWidth = 1
|
|
||||||
self.layer.cornerRadius = 20
|
self.layer.cornerRadius = 20
|
||||||
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with OSC opacity
|
self.backgroundColor = UIColor(white: 0.2, alpha: self.backgroundAlpha - 0.18) // offset to be consistent with OSC opacity
|
||||||
self.layer.shadowColor = UIColor.clear.cgColor
|
// self.layer.shadowColor = UIColor.clear.cgColor
|
||||||
self.layer.shadowRadius = 8
|
// self.layer.shadowRadius = 8
|
||||||
self.layer.shadowOpacity = 0.5
|
// self.layer.shadowOpacity = 0.5
|
||||||
|
|
||||||
addSubview(label)
|
addSubview(label)
|
||||||
|
|
||||||
@@ -151,17 +156,13 @@ import UIKit
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func buttonDownVisualEffect() {
|
private func buttonDownVisualEffect() {
|
||||||
let spread = 10.2; // 扩散的大小
|
self.layer.borderWidth = 8.6
|
||||||
let largerRect = self.bounds.insetBy(dx: -spread, dy: -spread)
|
self.layer.borderColor = UIColor(red: 0.5, green: 0.5, blue: 1.0, alpha: 0.80).cgColor
|
||||||
let shadowPath = UIBezierPath(roundedRect: largerRect, cornerRadius: self.layer.cornerRadius)
|
}
|
||||||
self.layer.shadowPath = shadowPath.cgPath
|
|
||||||
|
|
||||||
// self.layer.shadowColor = UIColor.systemBlue.withAlphaComponent(0.7).cgColor
|
private func buttonUpVisualEffect() {
|
||||||
self.layer.shadowColor = UIColor(red: 0.5, green: 0.5, blue: 1.0, alpha: 0.80).cgColor
|
self.layer.borderWidth = 1
|
||||||
self.layer.shadowOffset = CGSize.zero
|
self.layer.borderColor = defaultBorderColor
|
||||||
self.layer.shadowOpacity = 1.0
|
|
||||||
self.layer.shadowRadius = 0.0
|
|
||||||
self.layer.borderWidth = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Touch event handling
|
// Touch event handling
|
||||||
@@ -174,15 +175,12 @@ import UIKit
|
|||||||
if !OnScreenButtonView.editMode {
|
if !OnScreenButtonView.editMode {
|
||||||
// self.backgroundColor = UIColor.systemBlue.withAlphaComponent(0.7)
|
// self.backgroundColor = UIColor.systemBlue.withAlphaComponent(0.7)
|
||||||
self.buttonDownVisualEffect()
|
self.buttonDownVisualEffect()
|
||||||
self.layer.borderWidth = 0
|
|
||||||
// if the command(keystring contains "+", it's a multi-key command or a quick triggering key, rather than a physical button
|
// if the command(keystring contains "+", it's a multi-key command or a quick triggering key, rather than a physical button
|
||||||
if(self.keyString.contains("+")){
|
if(self.keyString.contains("+")){
|
||||||
let keyboardCmdStrings = CommandManager.shared.extractKeyStrings(from: self.keyString)!
|
let keyboardCmdStrings = CommandManager.shared.extractKeyStrings(from: self.keyString)!
|
||||||
CommandManager.shared.sendKeyDownEventWithDelay(keyboardCmdStrings: keyboardCmdStrings) // send multi-key command
|
CommandManager.shared.sendKeyDownEventWithDelay(keyboardCmdStrings: keyboardCmdStrings) // send multi-key command
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.03) { // reset shadow color immediately 50ms later
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.03) { // reset shadow color immediately 50ms later
|
||||||
self.layer.shadowColor = UIColor.clear.cgColor
|
self.buttonUpVisualEffect()
|
||||||
self.layer.borderWidth = 1
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if there's no "+" in the keystring, treat it as a regular button:
|
// if there's no "+" in the keystring, treat it as a regular button:
|
||||||
@@ -236,15 +234,12 @@ import UIKit
|
|||||||
else{
|
else{
|
||||||
LiSendKeyboardEvent(CommandManager.keyMappings[self.keyString]!,Int8(KEY_ACTION_UP), 0)
|
LiSendKeyboardEvent(CommandManager.keyMappings[self.keyString]!,Int8(KEY_ACTION_UP), 0)
|
||||||
}
|
}
|
||||||
|
self.buttonUpVisualEffect()
|
||||||
// self.backgroundColor = self.originalBackgroundColor
|
|
||||||
self.layer.shadowColor = UIColor.clear.cgColor
|
|
||||||
self.layer.borderWidth = 1
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// self.backgroundColor = self.originalBackgroundColor
|
// self.backgroundColor = self.originalBackgroundColor
|
||||||
self.layer.shadowColor = UIColor.clear.cgColor
|
// self.layer.shadowColor = UIColor.clear.cgColor
|
||||||
self.layer.borderWidth = 1
|
// self.layer.borderWidth = 1
|
||||||
|
|
||||||
guard let superview = superview else { return }
|
guard let superview = superview else { return }
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user