mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-05 14:02:48 +00:00
Fix call rating alert layout
This commit is contained in:
parent
ad3147dbbf
commit
1e914ba95c
@ -7,6 +7,7 @@ open class ASButtonNode: ASControlNode {
|
|||||||
public let highlightedTitleNode: ImmediateTextNode
|
public let highlightedTitleNode: ImmediateTextNode
|
||||||
public let disabledTitleNode: ImmediateTextNode
|
public let disabledTitleNode: ImmediateTextNode
|
||||||
public let imageNode: ASImageNode
|
public let imageNode: ASImageNode
|
||||||
|
public let highlightedImageNode: ASImageNode
|
||||||
public let disabledImageNode: ASImageNode
|
public let disabledImageNode: ASImageNode
|
||||||
public let backgroundImageNode: ASImageNode
|
public let backgroundImageNode: ASImageNode
|
||||||
public let highlightedBackgroundImageNode: ASImageNode
|
public let highlightedBackgroundImageNode: ASImageNode
|
||||||
@ -69,6 +70,11 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.imageNode.displaysAsynchronously = false
|
self.imageNode.displaysAsynchronously = false
|
||||||
self.imageNode.displayWithoutProcessing = true
|
self.imageNode.displayWithoutProcessing = true
|
||||||
|
|
||||||
|
self.highlightedImageNode = ASImageNode()
|
||||||
|
self.highlightedImageNode.isUserInteractionEnabled = false
|
||||||
|
self.highlightedImageNode.displaysAsynchronously = false
|
||||||
|
self.highlightedImageNode.displayWithoutProcessing = true
|
||||||
|
|
||||||
self.disabledImageNode = ASImageNode()
|
self.disabledImageNode = ASImageNode()
|
||||||
self.disabledImageNode.isUserInteractionEnabled = false
|
self.disabledImageNode.isUserInteractionEnabled = false
|
||||||
self.disabledImageNode.displaysAsynchronously = false
|
self.disabledImageNode.displaysAsynchronously = false
|
||||||
@ -95,6 +101,8 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.addSubnode(self.disabledTitleNode)
|
self.addSubnode(self.disabledTitleNode)
|
||||||
self.disabledTitleNode.isHidden = true
|
self.disabledTitleNode.isHidden = true
|
||||||
self.addSubnode(self.imageNode)
|
self.addSubnode(self.imageNode)
|
||||||
|
self.addSubnode(self.highlightedImageNode)
|
||||||
|
self.highlightedImageNode.isHidden = true
|
||||||
self.addSubnode(self.disabledImageNode)
|
self.addSubnode(self.disabledImageNode)
|
||||||
self.disabledImageNode.isHidden = true
|
self.disabledImageNode.isHidden = true
|
||||||
}
|
}
|
||||||
@ -216,6 +224,11 @@ open class ASButtonNode: ASControlNode {
|
|||||||
}
|
}
|
||||||
if state == .disabled {
|
if state == .disabled {
|
||||||
self.disabledImageNode.image = image
|
self.disabledImageNode.image = image
|
||||||
|
} else if state == [] {
|
||||||
|
self.imageNode.image = image
|
||||||
|
self.highlightedImageNode.image = image
|
||||||
|
} else if state == .highlighted || state == .selected || state == [.selected, .highlighted] {
|
||||||
|
self.highlightedImageNode.image = image
|
||||||
} else {
|
} else {
|
||||||
self.imageNode.image = image
|
self.imageNode.image = image
|
||||||
}
|
}
|
||||||
@ -225,7 +238,7 @@ open class ASButtonNode: ASControlNode {
|
|||||||
if state == [] {
|
if state == [] {
|
||||||
self.backgroundImageNode.image = image
|
self.backgroundImageNode.image = image
|
||||||
self.highlightedBackgroundImageNode.image = image
|
self.highlightedBackgroundImageNode.image = image
|
||||||
} else if state == .highlighted || state == .selected {
|
} else if state == .highlighted || state == .selected || state == [.selected, .highlighted] {
|
||||||
self.highlightedBackgroundImageNode.image = image
|
self.highlightedBackgroundImageNode.image = image
|
||||||
} else {
|
} else {
|
||||||
self.backgroundImageNode.image = image
|
self.backgroundImageNode.image = image
|
||||||
@ -245,10 +258,29 @@ open class ASButtonNode: ASControlNode {
|
|||||||
return self.backgroundImageNode.image
|
return self.backgroundImageNode.image
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override open var isSelected: Bool {
|
||||||
|
didSet {
|
||||||
|
if self.isSelected != oldValue {
|
||||||
|
if self.isSelected {
|
||||||
|
if self.highlightedImageNode.image != nil {
|
||||||
|
self.highlightedImageNode.isHidden = false
|
||||||
|
self.imageNode.isHidden = true
|
||||||
|
} else {
|
||||||
|
self.highlightedImageNode.isHidden = true
|
||||||
|
self.imageNode.isHidden = false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.highlightedImageNode.isHidden = true
|
||||||
|
self.imageNode.isHidden = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override open var isHighlighted: Bool {
|
override open var isHighlighted: Bool {
|
||||||
didSet {
|
didSet {
|
||||||
if self.isHighlighted != oldValue {
|
if self.isHighlighted != oldValue {
|
||||||
if self.isHighlighted {
|
if self.isHighlighted || self.isSelected {
|
||||||
if self.highlightedTitleNode.attributedText != nil {
|
if self.highlightedTitleNode.attributedText != nil {
|
||||||
self.highlightedTitleNode.isHidden = false
|
self.highlightedTitleNode.isHidden = false
|
||||||
self.titleNode.isHidden = true
|
self.titleNode.isHidden = true
|
||||||
@ -263,12 +295,22 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.highlightedBackgroundImageNode.isHidden = true
|
self.highlightedBackgroundImageNode.isHidden = true
|
||||||
self.backgroundImageNode.isHidden = false
|
self.backgroundImageNode.isHidden = false
|
||||||
}
|
}
|
||||||
|
if self.highlightedImageNode.image != nil {
|
||||||
|
self.highlightedImageNode.isHidden = false
|
||||||
|
self.imageNode.isHidden = true
|
||||||
|
} else {
|
||||||
|
self.highlightedImageNode.isHidden = true
|
||||||
|
self.imageNode.isHidden = false
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.highlightedTitleNode.isHidden = true
|
self.highlightedTitleNode.isHidden = true
|
||||||
self.titleNode.isHidden = false
|
self.titleNode.isHidden = false
|
||||||
|
|
||||||
self.highlightedBackgroundImageNode.isHidden = true
|
self.highlightedBackgroundImageNode.isHidden = true
|
||||||
self.backgroundImageNode.isHidden = false
|
self.backgroundImageNode.isHidden = false
|
||||||
|
|
||||||
|
self.highlightedImageNode.isHidden = true
|
||||||
|
self.imageNode.isHidden = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -342,6 +384,7 @@ open class ASButtonNode: ASControlNode {
|
|||||||
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
self.highlightedTitleNode.frame = CGRect(origin: highlightedTitleOrigin, size: self.calculatedHighlightedTitleSize)
|
||||||
self.disabledTitleNode.frame = CGRect(origin: disabledTitleOrigin, size: self.calculatedDisabledTitleSize)
|
self.disabledTitleNode.frame = CGRect(origin: disabledTitleOrigin, size: self.calculatedDisabledTitleSize)
|
||||||
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
self.imageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||||
|
self.highlightedImageNode.frame = CGRect(origin: imageOrigin, size: imageSize)
|
||||||
self.disabledImageNode.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)
|
||||||
|
|||||||
@ -141,12 +141,6 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
|||||||
|
|
||||||
self.validLayout = size
|
self.validLayout = size
|
||||||
|
|
||||||
var origin: CGPoint = CGPoint(x: 0.0, y: 20.0)
|
|
||||||
|
|
||||||
let titleSize = self.titleNode.measure(CGSize(width: size.width - 32.0, height: size.height))
|
|
||||||
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize))
|
|
||||||
origin.y += titleSize.height + 13.0
|
|
||||||
|
|
||||||
let actionButtonHeight: CGFloat = 44.0
|
let actionButtonHeight: CGFloat = 44.0
|
||||||
var minActionsWidth: CGFloat = 0.0
|
var minActionsWidth: CGFloat = 0.0
|
||||||
let maxActionWidth: CGFloat = floor(size.width / CGFloat(self.actionNodes.count))
|
let maxActionWidth: CGFloat = floor(size.width / CGFloat(self.actionNodes.count))
|
||||||
@ -168,6 +162,9 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
|||||||
|
|
||||||
let insets = UIEdgeInsets(top: 18.0, left: 18.0, bottom: 18.0, right: 18.0)
|
let insets = UIEdgeInsets(top: 18.0, left: 18.0, bottom: 18.0, right: 18.0)
|
||||||
|
|
||||||
|
var origin: CGPoint = CGPoint(x: 0.0, y: 20.0)
|
||||||
|
let titleSize = self.titleNode.measure(CGSize(width: size.width - 32.0, height: size.height))
|
||||||
|
|
||||||
var contentWidth = max(titleSize.width, minActionsWidth)
|
var contentWidth = max(titleSize.width, minActionsWidth)
|
||||||
contentWidth = max(contentWidth, 234.0)
|
contentWidth = max(contentWidth, 234.0)
|
||||||
|
|
||||||
@ -181,6 +178,9 @@ private final class CallRatingAlertContentNode: AlertContentNode {
|
|||||||
|
|
||||||
let resultWidth = contentWidth + insets.left + insets.right
|
let resultWidth = contentWidth + insets.left + insets.right
|
||||||
|
|
||||||
|
transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((resultWidth - titleSize.width) / 2.0), y: origin.y), size: titleSize))
|
||||||
|
origin.y += titleSize.height + 13.0
|
||||||
|
|
||||||
let starSize = CGSize(width: 42.0, height: 38.0)
|
let starSize = CGSize(width: 42.0, height: 38.0)
|
||||||
let starsOrigin = floorToScreenPixels((resultWidth - starSize.width * 5.0) / 2.0)
|
let starsOrigin = floorToScreenPixels((resultWidth - starSize.width * 5.0) / 2.0)
|
||||||
for i in 0 ..< self.starNodes.count {
|
for i in 0 ..< self.starNodes.count {
|
||||||
|
|||||||
@ -534,7 +534,7 @@ public final class PresentationCallImpl: PresentationCall {
|
|||||||
|
|
||||||
if !self.shouldPresentCallRating {
|
if !self.shouldPresentCallRating {
|
||||||
self.ongoingContext.needsRating { needsRating in
|
self.ongoingContext.needsRating { needsRating in
|
||||||
self.shouldPresentCallRating = needsRating
|
// self.shouldPresentCallRating = needsRating
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user