Я столкнулся с той же проблемой, поэтому я думаю, что это не для ваших первых двух вопросов. Вот как я подкласс это:
@interface MyButton : UIButton
@property (nonatomic) BOOL reversesTitleShadowWhenSelected;
@end
@implementation MyButton
@synthesize reversesTitleShadowWhenSelected;
- (void)setSelected:(BOOL)selected
{
if (self.reversesTitleShadowWhenSelected)
{
if ((selected && !self.isSelected) ||
(!selected && self.isSelected))
{
CGSize offset = self.titleLabel.shadowOffset;
offset.width *= -1;
offset.height *= -1;
self.titleLabel.shadowOffset = offset;
}
}
[super setSelected:selected];
}
@end