mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Fix button node selected/highlighted states
This commit is contained in:
parent
561bee0f3b
commit
7c9ff342fa
@ -8,6 +8,8 @@ open class ASButtonNode: ASControlNode {
|
||||
public let disabledTitleNode: ImmediateTextNode
|
||||
public let imageNode: ASImageNode
|
||||
public let highlightedImageNode: ASImageNode
|
||||
public let selectedImageNode: ASImageNode
|
||||
public let highlightedSelectedImageNode: ASImageNode
|
||||
public let disabledImageNode: ASImageNode
|
||||
public let backgroundImageNode: ASImageNode
|
||||
public let highlightedBackgroundImageNode: ASImageNode
|
||||
@ -70,11 +72,21 @@ open class ASButtonNode: ASControlNode {
|
||||
self.imageNode.displaysAsynchronously = false
|
||||
self.imageNode.displayWithoutProcessing = true
|
||||
|
||||
self.selectedImageNode = ASImageNode()
|
||||
self.selectedImageNode.isUserInteractionEnabled = false
|
||||
self.selectedImageNode.displaysAsynchronously = false
|
||||
self.selectedImageNode.displayWithoutProcessing = true
|
||||
|
||||
self.highlightedImageNode = ASImageNode()
|
||||
self.highlightedImageNode.isUserInteractionEnabled = false
|
||||
self.highlightedImageNode.displaysAsynchronously = false
|
||||
self.highlightedImageNode.displayWithoutProcessing = true
|
||||
|
||||
self.highlightedSelectedImageNode = ASImageNode()
|
||||
self.highlightedSelectedImageNode.isUserInteractionEnabled = false
|
||||
self.highlightedSelectedImageNode.displaysAsynchronously = false
|
||||
self.highlightedSelectedImageNode.displayWithoutProcessing = true
|
||||
|
||||
self.disabledImageNode = ASImageNode()
|
||||
self.disabledImageNode.isUserInteractionEnabled = false
|
||||
self.disabledImageNode.displaysAsynchronously = false
|
||||
@ -101,8 +113,12 @@ open class ASButtonNode: ASControlNode {
|
||||
self.addSubnode(self.disabledTitleNode)
|
||||
self.disabledTitleNode.isHidden = true
|
||||
self.addSubnode(self.imageNode)
|
||||
self.addSubnode(self.selectedImageNode)
|
||||
self.selectedImageNode.isHidden = true
|
||||
self.addSubnode(self.highlightedImageNode)
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.addSubnode(self.highlightedSelectedImageNode)
|
||||
self.highlightedSelectedImageNode.isHidden = true
|
||||
self.addSubnode(self.disabledImageNode)
|
||||
self.disabledImageNode.isHidden = true
|
||||
}
|
||||
@ -226,9 +242,12 @@ open class ASButtonNode: ASControlNode {
|
||||
self.disabledImageNode.image = image
|
||||
} else if state == [] {
|
||||
self.imageNode.image = image
|
||||
} else if state == .highlighted {
|
||||
self.highlightedImageNode.image = image
|
||||
} else if state == .highlighted || state == .selected || state == [.selected, .highlighted] {
|
||||
self.highlightedImageNode.image = image
|
||||
} else if state == .selected {
|
||||
self.selectedImageNode.image = image
|
||||
} else if state == [.selected, .highlighted] {
|
||||
self.highlightedSelectedImageNode.image = image
|
||||
} else {
|
||||
self.imageNode.image = image
|
||||
}
|
||||
@ -262,15 +281,15 @@ open class ASButtonNode: ASControlNode {
|
||||
didSet {
|
||||
if self.isSelected != oldValue {
|
||||
if self.isSelected {
|
||||
if self.highlightedImageNode.image != nil {
|
||||
self.highlightedImageNode.isHidden = false
|
||||
if self.selectedImageNode.image != nil {
|
||||
self.selectedImageNode.isHidden = false
|
||||
self.imageNode.isHidden = true
|
||||
} else {
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.selectedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
} else {
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.selectedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
}
|
||||
@ -280,7 +299,7 @@ open class ASButtonNode: ASControlNode {
|
||||
override open var isHighlighted: Bool {
|
||||
didSet {
|
||||
if self.isHighlighted != oldValue {
|
||||
if self.isHighlighted || self.isSelected {
|
||||
if self.isHighlighted {
|
||||
if self.highlightedTitleNode.attributedText != nil {
|
||||
self.highlightedTitleNode.isHidden = false
|
||||
self.titleNode.isHidden = true
|
||||
@ -295,10 +314,17 @@ open class ASButtonNode: ASControlNode {
|
||||
self.highlightedBackgroundImageNode.isHidden = true
|
||||
self.backgroundImageNode.isHidden = false
|
||||
}
|
||||
if self.highlightedImageNode.image != nil {
|
||||
if self.isSelected && self.highlightedSelectedImageNode.image != nil {
|
||||
self.highlightedSelectedImageNode.isHidden = false
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.selectedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = true
|
||||
} else if self.highlightedImageNode.image != nil {
|
||||
self.highlightedSelectedImageNode.isHidden = true
|
||||
self.highlightedImageNode.isHidden = false
|
||||
self.imageNode.isHidden = true
|
||||
} else {
|
||||
self.highlightedSelectedImageNode.isHidden = true
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
@ -309,8 +335,15 @@ open class ASButtonNode: ASControlNode {
|
||||
self.highlightedBackgroundImageNode.isHidden = true
|
||||
self.backgroundImageNode.isHidden = false
|
||||
|
||||
self.highlightedSelectedImageNode.isHidden = true
|
||||
self.highlightedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
if self.isSelected && self.selectedImageNode.image != nil {
|
||||
self.selectedImageNode.isHidden = false
|
||||
self.imageNode.isHidden = true
|
||||
} else {
|
||||
self.selectedImageNode.isHidden = true
|
||||
self.imageNode.isHidden = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -384,7 +417,9 @@ open class ASButtonNode: ASControlNode {
|
||||
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
||||
self.disabledTitleNode.frame = CGRect(origin: disabledTitleOrigin, size: self.calculatedDisabledTitleSize)
|
||||
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.selectedImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.highlightedImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.highlightedSelectedImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
self.disabledImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||
|
||||
self.backgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||
|
Loading…
x
Reference in New Issue
Block a user