2012-04-18 23 views

Respuesta

-2

Puede establecer la fuente en Vista de diseño para más detalles:

Puede configurar todo esto en sí mismo Interface Builder. A menos que tenga muchas razones para hacerlo en código. He aquí cómo hacerlo en IB -

Abrir la barra lateral derecha & continuación, haga clic en "Configuración de Estado", hay que ver los diversos estados del botón, por defecto, ha destacado, seleccionada & personas de movilidad reducida. Ahora puede establecer diferentes imágenes para cada estado, diferentes tipos de fuente & colores de fuente para cada estado. Hopr esto ayuda ...

enter image description here

Gracias ..!

+0

Creo que lo Dinesh está tratando de decir es que se puede crear una imagen con una fuente diferente y luego configurar el botón para esa imagen. –

+0

Ok, ahora soy la respuesta de actualización ..! – Dinesh

+0

ahora iam actualización respuesta, puede seguir la imagen para indicar la configuración cambiar a combo en uibutton para cambiar la fuente para uibutton diferentes estados. – Dinesh

2

Aquí está mi bloque de código de trabajo. IB_DESIGNABLE es sólo una pequeña mejora para que los resultados visualizable en la Interfaz del generador :-)

@interface MyButton : UIButton 
@end 

IB_DESIGNABLE @implementation MyButton 
// Here you can override the look & feel for each state 
// Actually not only fontSize, but any writable properties ^_^ 
- (void)setEnabled:(BOOL)enabled { 
    [super setEnabled:enabled]; 
    self.titleLabel.font = enabled ? [UIFont systemFontOfSize:14] : [UIFont systemFontOfSize:10]; 
} 

- (void)setHighlighted:(BOOL)highlighted { 
    [super setHighlighted:highlighted]; 
    self.titleLabel.font = highlighted ? [UIFont systemFontOfSize:14] : [UIFont systemFontOfSize:12]; 
} 

- (void)setSelected:(BOOL)selected { 
    [super setSelected:selected]; 
    self.titleLabel.font = selected ? [UIFont boldSystemFontOfSize:14] : [UIFont systemFontOfSize:12]; 
} 

@end 

Se puede ver diseños a MyButton s de letra refleja en el constructor de interfaces como esto enter image description here

+0

@inforeqd Por favor, hágame saber si esta solución funciona para usted – Ducky

2

Basta con crear su botón personalizado . Anular subvistas de diseño. Configure sus fuentes requeridas.

// Interface 
@interface EezyButton : UIButton 

@end 
//Implementation 
#import "EezyButton.h" 

@implementation EezyButton 

- (void)layoutSubviews{ 
    if (self.state == UIControlStateNormal) { 
     [self.titleLabel setFont:[UIFont systemFontOfSize:12]]; 
    } 
    else if (self.state == UIControlStateHighlighted){ 
     [self.titleLabel setFont:[UIFont systemFontOfSize:25]]; 

    } 
    else if (self.state == UIControlStateDisabled){ 
     [self.titleLabel setFont:[UIFont systemFontOfSize:12]]; 
    } 
    else if (self.state == UIControlStateSelected){ 
     [self.titleLabel setFont:[UIFont systemFontOfSize:28]]; 
    } 
    [super layoutSubviews]; 
} 

@end 
9

Ésta es una pregunta muy fresco, lo que me llevó a hacer una subclase de UIButton que permite la configuración de fuentes estatales!

También escribí un código de ejemplo que muestra cómo configurar la fuente. Si está utilizando Interface Builder, configure la clase del botón en ConfigurableButton. En el código, el botón también debe declararse como ConfigurableButton, ya que he agregado nuevas propiedades y un método setFont:forState:.

¡Deje un comentario para cualquier mejora que se pueda realizar!

Vista Controlador aplicación

#import "ViewController.h" 
#import "ConfigurableButton.h" 

@interface ViewController() 

@property (weak, nonatomic) IBOutlet ConfigurableButton *toggleButton; 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    //Set the fonts for button's states 
    _toggleButton.normalFont  = [UIFont fontWithName:@"BradleyHandITCTT-Bold" size:14]; 
    _toggleButton.highlightedFont = [UIFont fontWithName:@"Chalkduster" size:14]; 
    _toggleButton.selectedFont  = [UIFont fontWithName:@"Zapfino" size:14]; 
    _toggleButton.disabledFont  = [UIFont fontWithName:@"Arial" size:14]; 
} 

@end 

ConfigurableButton.h

#import <UIKit/UIKit.h> 

IB_DESIGNABLE 

/** 
* A button that allows fonts to be assigned to each of the button's states. 
* 
* A state font can be specified using setFont:forState, or through one of the 
* four state Font properties. 
* 
* If a font is not specified for a given state, then 
* the System font will be displayed with a font size of 15. 
*/ 
@interface ConfigurableButton : UIButton 

@property (strong, nonatomic) UIFont *normalFont; 
@property (strong, nonatomic) UIFont *highlightedFont; 
@property (strong, nonatomic) UIFont *selectedFont; 
@property (strong, nonatomic) UIFont *disabledFont; 

/** 
* Set a font for a button state. 
* 
* @param font the font 
* @param state a control state -- can be 
*  UIControlStateNormal 
*  UIControlStateHighlighted 
*  UIControlStateDisabled 
*  UIControlStateSelected 
*/ 
- (void) setFont:(UIFont *)font forState:(NSUInteger)state; 

@end 

ConfigurableButton.m

#import "ConfigurableButton.h" 

@implementation ConfigurableButton 

//Sets one of the font properties, depending on which state was passed 
- (void) setFont:(UIFont *)font forState:(NSUInteger)state 
{ 
    switch (state) { 
     case UIControlStateNormal: 
     { 
      self.normalFont = font; 
      break; 
     } 

     case UIControlStateHighlighted: 
     { 
      self.highlightedFont = font; 
      break; 
     } 

     case UIControlStateDisabled: 
     { 
      self.disabledFont = font; 
      break; 
     } 

     case UIControlStateSelected: 
     { 
      self.selectedFont = font; 
      break; 
     } 

     default: 
     { 
      self.normalFont = font; 
      break; 
     } 
    } 
} 

/** 
* Overrides layoutSubviews in UIView, to set the font for the button's state, 
* before calling [super layoutSubviews]. 
*/ 
- (void) layoutSubviews 
{ 
    NSUInteger state = self.state; 

    switch (state) { 
     case UIControlStateNormal: 
     { 
      [self setTitleFont:_normalFont]; 
      break; 
     } 

     case UIControlStateHighlighted: 
     { 
      [self setTitleFont:_highlightedFont]; 
      break; 
     } 

     case UIControlStateDisabled: 
     { 
      [self setTitleFont:_disabledFont]; 
      break; 
     } 

     case UIControlStateSelected: 
     { 
      [self setTitleFont:_selectedFont]; 
      break; 
     } 

     default: 
     { 
      [self setTitleFont:_normalFont]; 
      break; 
     } 

    } 

    [super layoutSubviews]; 
} 

/** 
* Private 
* 
* Convenience method that falls back to the System font, 
* if no font is configured. 
*/ 
- (void) setTitleFont:(UIFont *)font 
{ 
    if (!font) { 
     font = [UIFont systemFontOfSize:15]; 
    } 

    self.titleLabel.font = font; 
} 

@end 
4

La solución más fácil es establecer un título atribuido para cada estado UIControl:

var attributes = [String : AnyObject]() 
attributes[NSForegroundColorAttributeName] = UIColor.redColor() 
attributes[NSFontAttributeName] = UIFont.systemFontOfSize(15) 

let normal = NSAttributedString(string: "normal", attributes: attributes) 
button.setAttributedTitle(normal, forState: .Normal) 

attributes[NSForegroundColorAttributeName] = UIColor.redColor() 
attributes[NSFontAttributeName] = UIFont.boldSystemFontOfSize(15) 

let selected = NSAttributedString(string: "selected", attributes: attributes) 
button.setAttributedTitle(selected, forState: .Selected) 
Cuestiones relacionadas