mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
support the combined [.Selected, .Highlighted] state in ASButtonNode
This commit is contained in:
@@ -21,16 +21,19 @@
|
||||
NSAttributedString *_normalAttributedTitle;
|
||||
NSAttributedString *_highlightedAttributedTitle;
|
||||
NSAttributedString *_selectedAttributedTitle;
|
||||
NSAttributedString *_selectedHighlightedAttributedTitle;
|
||||
NSAttributedString *_disabledAttributedTitle;
|
||||
|
||||
UIImage *_normalImage;
|
||||
UIImage *_highlightedImage;
|
||||
UIImage *_selectedImage;
|
||||
UIImage *_selectedHighlightedImage;
|
||||
UIImage *_disabledImage;
|
||||
|
||||
UIImage *_normalBackgroundImage;
|
||||
UIImage *_highlightedBackgroundImage;
|
||||
UIImage *_selectedBackgroundImage;
|
||||
UIImage *_selectedHighlightedBackgroundImage;
|
||||
UIImage *_disabledBackgroundImage;
|
||||
}
|
||||
|
||||
@@ -136,6 +139,8 @@
|
||||
UIImage *newImage;
|
||||
if (self.enabled == NO && _disabledImage) {
|
||||
newImage = _disabledImage;
|
||||
} else if (self.highlighted && self.selected && _selectedHighlightedImage) {
|
||||
newImage = _selectedHighlightedImage;
|
||||
} else if (self.highlighted && _highlightedImage) {
|
||||
newImage = _highlightedImage;
|
||||
} else if (self.selected && _selectedImage) {
|
||||
@@ -156,6 +161,8 @@
|
||||
NSAttributedString *newTitle;
|
||||
if (self.enabled == NO && _disabledAttributedTitle) {
|
||||
newTitle = _disabledAttributedTitle;
|
||||
} else if (self.highlighted && self.selected && _selectedHighlightedAttributedTitle) {
|
||||
newTitle = _selectedHighlightedAttributedTitle;
|
||||
} else if (self.highlighted && _highlightedAttributedTitle) {
|
||||
newTitle = _highlightedAttributedTitle;
|
||||
} else if (self.selected && _selectedAttributedTitle) {
|
||||
@@ -177,6 +184,8 @@
|
||||
UIImage *newImage;
|
||||
if (self.enabled == NO && _disabledBackgroundImage) {
|
||||
newImage = _disabledBackgroundImage;
|
||||
} else if (self.highlighted && self.selected && _selectedHighlightedBackgroundImage) {
|
||||
newImage = _selectedHighlightedBackgroundImage;
|
||||
} else if (self.highlighted && _highlightedBackgroundImage) {
|
||||
newImage = _highlightedBackgroundImage;
|
||||
} else if (self.selected && _selectedBackgroundImage) {
|
||||
@@ -283,6 +292,9 @@
|
||||
|
||||
case ASControlStateSelected:
|
||||
return _selectedAttributedTitle;
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
return _selectedHighlightedAttributedTitle;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
return _disabledAttributedTitle;
|
||||
@@ -307,6 +319,10 @@
|
||||
case ASControlStateSelected:
|
||||
_selectedAttributedTitle = [title copy];
|
||||
break;
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
_selectedHighlightedAttributedTitle = [title copy];
|
||||
break;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
_disabledAttributedTitle = [title copy];
|
||||
@@ -331,6 +347,9 @@
|
||||
case ASControlStateSelected:
|
||||
return _selectedImage;
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
return _selectedHighlightedImage;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
return _disabledImage;
|
||||
|
||||
@@ -354,7 +373,11 @@
|
||||
case ASControlStateSelected:
|
||||
_selectedImage = image;
|
||||
break;
|
||||
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
_selectedHighlightedImage = image;
|
||||
break;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
_disabledImage = image;
|
||||
break;
|
||||
@@ -365,6 +388,30 @@
|
||||
[self updateImage];
|
||||
}
|
||||
|
||||
- (UIImage *)backgroundImageForState:(ASControlState)state
|
||||
{
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
switch (state) {
|
||||
case ASControlStateNormal:
|
||||
return _normalBackgroundImage;
|
||||
|
||||
case ASControlStateHighlighted:
|
||||
return _highlightedBackgroundImage;
|
||||
|
||||
case ASControlStateSelected:
|
||||
return _selectedBackgroundImage;
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
return _selectedHighlightedBackgroundImage;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
return _disabledBackgroundImage;
|
||||
|
||||
default:
|
||||
return _normalBackgroundImage;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setBackgroundImage:(UIImage *)image forState:(ASControlState)state
|
||||
{
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
@@ -380,6 +427,10 @@
|
||||
case ASControlStateSelected:
|
||||
_selectedBackgroundImage = image;
|
||||
break;
|
||||
|
||||
case ASControlStateSelected | ASControlStateHighlighted:
|
||||
_selectedHighlightedBackgroundImage = image;
|
||||
break;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
_disabledBackgroundImage = image;
|
||||
@@ -391,28 +442,6 @@
|
||||
[self updateBackgroundImage];
|
||||
}
|
||||
|
||||
- (UIImage *)backgroundImageForState:(ASControlState)state
|
||||
{
|
||||
ASDN::MutexLocker l(_propertyLock);
|
||||
switch (state) {
|
||||
case ASControlStateNormal:
|
||||
return _normalBackgroundImage;
|
||||
|
||||
case ASControlStateHighlighted:
|
||||
return _highlightedBackgroundImage;
|
||||
|
||||
case ASControlStateSelected:
|
||||
return _selectedBackgroundImage;
|
||||
|
||||
case ASControlStateDisabled:
|
||||
return _disabledBackgroundImage;
|
||||
|
||||
default:
|
||||
return _normalBackgroundImage;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (ASLayoutSpec *)layoutSpecThatFits:(ASSizeRange)constrainedSize
|
||||
{
|
||||
UIEdgeInsets contentEdgeInsets;
|
||||
|
||||
Reference in New Issue
Block a user