support the combined [.Selected, .Highlighted] state in ASButtonNode

This commit is contained in:
Tom King
2016-03-09 09:23:15 -05:00
parent de4e4db671
commit cd85389397

View File

@@ -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;