È possibile utilizzare il tasto di default in questo modo:
UIButton* button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTranslatesAutoresizingMaskIntoConstraints:NO];
[button setTitle:@"Normal" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Selected" forState:UIControlStateSelected];
[self.view addSubview:button];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[button]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[button]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
Se si utilizza il pulsante personalizzato, il modo più semplice a cui riesco a pensare è sottoclasse UIButton e aggiungere la propria UILabel personalizzata all'interno. Qui è il mio codice funzione di ciò che intendo:
@interface CustomButton : UIButton
{
NSString* _normalTitle;
NSString* _selectedTitle;
}
@property UILabel* customLabel;
@end
@implementation CustomButton
@synthesize customLabel=_customLabel;
- (instancetype)init;
{
self = [super init];
if (self) {
[self setBackgroundColor:[UIColor greenColor]];
_customLabel = [UILabel new];
[_customLabel setTextColor:[UIColor whiteColor]];
[_customLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addSubview:_customLabel];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_customLabel]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_customLabel)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_customLabel]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_customLabel)]];
}
return self;
}
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
{
if (state == UIControlStateNormal) {
_normalTitle = title;
} else if (state == UIControlStateSelected) {
_selectedTitle = title;
}
[self setSelected:[self isSelected]];
}
- (void)setSelected:(BOOL)selected;
{
[super setSelected:selected];
if (selected) {
[_customLabel setText:_selectedTitle];
} else {
[_customLabel setText:_normalTitle];
}
}
@end
http://stackoverflow.com/questions/4135032/ios-uibutton-resize-according-to-text-length – Alfa
Già letto che ma non aiuta molto :( – Abhishek
Mentre si modifica lo stato del pulsante, fare la dimensione del pulsante grande abbastanza che la stringa possa venire facilmente al suo interno, ma prima di memorizzare gentilmente il centro del pulsante nella variabile quindi utilizzare il metodo di adattamento e quindi fornire nuovamente lo stesso centro al pulsante. – Alfa