mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
ASButtonNode: Add disabled state
This commit is contained in:
@@ -6,6 +6,7 @@ open class ASButtonNode: ASControlNode {
|
|||||||
public let titleNode: ImmediateTextNode
|
public let titleNode: ImmediateTextNode
|
||||||
public let highlightedTitleNode: ImmediateTextNode
|
public let highlightedTitleNode: ImmediateTextNode
|
||||||
public let imageNode: ASImageNode
|
public let imageNode: ASImageNode
|
||||||
|
public let disabledImageNode: ASImageNode
|
||||||
public let backgroundImageNode: ASImageNode
|
public let backgroundImageNode: ASImageNode
|
||||||
public let highlightedBackgroundImageNode: ASImageNode
|
public let highlightedBackgroundImageNode: ASImageNode
|
||||||
|
|
||||||
@@ -62,6 +63,11 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.imageNode.displaysAsynchronously = false
|
self.imageNode.displaysAsynchronously = false
|
||||||
self.imageNode.displayWithoutProcessing = true
|
self.imageNode.displayWithoutProcessing = true
|
||||||
|
|
||||||
|
self.disabledImageNode = ASImageNode()
|
||||||
|
self.disabledImageNode.isUserInteractionEnabled = false
|
||||||
|
self.disabledImageNode.displaysAsynchronously = false
|
||||||
|
self.disabledImageNode.displayWithoutProcessing = true
|
||||||
|
|
||||||
self.backgroundImageNode = ASImageNode()
|
self.backgroundImageNode = ASImageNode()
|
||||||
self.backgroundImageNode.isUserInteractionEnabled = false
|
self.backgroundImageNode.isUserInteractionEnabled = false
|
||||||
self.backgroundImageNode.displaysAsynchronously = false
|
self.backgroundImageNode.displaysAsynchronously = false
|
||||||
@@ -81,6 +87,8 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.addSubnode(self.highlightedTitleNode)
|
self.addSubnode(self.highlightedTitleNode)
|
||||||
self.highlightedTitleNode.isHidden = true
|
self.highlightedTitleNode.isHidden = true
|
||||||
self.addSubnode(self.imageNode)
|
self.addSubnode(self.imageNode)
|
||||||
|
self.addSubnode(self.disabledImageNode)
|
||||||
|
self.disabledImageNode.isHidden = true
|
||||||
}
|
}
|
||||||
|
|
||||||
override open func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
|
override open func calculateSizeThatFits(_ constrainedSize: CGSize) -> CGSize {
|
||||||
@@ -184,8 +192,12 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.invalidateCalculatedLayout()
|
self.invalidateCalculatedLayout()
|
||||||
self.setNeedsLayout()
|
self.setNeedsLayout()
|
||||||
}
|
}
|
||||||
|
if state == .disabled {
|
||||||
|
self.disabledImageNode.image = image
|
||||||
|
} else {
|
||||||
self.imageNode.image = image
|
self.imageNode.image = image
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
open func setBackgroundImage(_ image: UIImage?, for state: UIControl.State) {
|
open func setBackgroundImage(_ image: UIImage?, for state: UIControl.State) {
|
||||||
if state == [] {
|
if state == [] {
|
||||||
@@ -199,8 +211,13 @@ open class ASButtonNode: ASControlNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open func image(for state: UIControl.State) -> UIImage? {
|
open func image(for state: UIControl.State) -> UIImage? {
|
||||||
|
switch state {
|
||||||
|
case .disabled:
|
||||||
|
return self.disabledImageNode.image ?? self.imageNode.image
|
||||||
|
default:
|
||||||
return self.imageNode.image
|
return self.imageNode.image
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
open func backgroundImage(for state: UIControl.State) -> UIImage? {
|
open func backgroundImage(for state: UIControl.State) -> UIImage? {
|
||||||
return self.backgroundImageNode.image
|
return self.backgroundImageNode.image
|
||||||
@@ -235,6 +252,20 @@ open class ASButtonNode: ASControlNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override open var isEnabled: Bool {
|
||||||
|
didSet {
|
||||||
|
if self.isEnabled != oldValue {
|
||||||
|
if self.isEnabled || self.disabledImageNode.image == nil {
|
||||||
|
self.imageNode.isHidden = false
|
||||||
|
self.disabledImageNode.isHidden = true
|
||||||
|
} else {
|
||||||
|
self.imageNode.isHidden = true
|
||||||
|
self.disabledImageNode.isHidden = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override open func layout() {
|
override open func layout() {
|
||||||
let size = self.bounds.size
|
let size = self.bounds.size
|
||||||
|
|
||||||
@@ -275,12 +306,9 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.titleNode.frame = CGRect(origin: titleOrigin, size: self.calculatedTitleSize)
|
self.titleNode.frame = CGRect(origin: titleOrigin, size: self.calculatedTitleSize)
|
||||||
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
||||||
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||||
|
self.disabledImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||||
|
|
||||||
self.backgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
self.backgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||||
self.highlightedBackgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
self.highlightedBackgroundImageNode.frame = CGRect(origin: CGPoint(), size: size)
|
||||||
}
|
}
|
||||||
|
|
||||||
func f2() {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user