Puis-je utiliser IB_DESIGNABLE et/ou IBInspectable pour définir layer.borderWidth et layer.borderColor dans Interface Builder? Je suis en train de créer mon bouton dans le code mais j'aimerais pouvoir définir tout cela dans IB mais je ne suis pas sûr si ces propriétés peuvent être définies de cette façon dans Xcode 6. J'aimerais en faire un IBOutlet au lieu d'avoir tout cela dans le code. Voici mon code de bouton maintenant.
directions = [UIButton buttonWithType:UIButtonTypeRoundedRect];
directions.titleLabel.textAlignment = NSTextAlignmentCenter;
directions.titleLabel.font = [UIFont fontWithName:@"FranklinGothicStd-ExtraCond" size:20.0];
[directions setTitle:@"Directions" forState:UIControlStateNormal];
[directions setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
directions.frame = CGRectMake(20, 178, 70, 70);
directions.layer.borderWidth = 2.0f;
directions.layer.borderColor = [UIColor whiteColor].CGColor;
directions.clipsToBounds = YES;
directions.backgroundColor = [UIColor clearColor];
[directions addTarget:self action:@selector(getDirections:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:directions];
J'ai défini ces valeurs comme suggéré et la bordure n'est jamais affichée dans le simulateur. EDIT: J'ai découvert pourquoi la frontière n'apparaissait pas lors de la définition de ces valeurs dans IB. La couleur de la bordure est un CGColor, j'ai donc dû le définir dans le code.
En fait, vous pouvez définir certaines propriétés du calque d'une vue via le générateur d'interface. Je sais que je peux définir borderWidth et cornerRadius d'une couche via xcode. borderColor ne fonctionne pas, probablement parce que le calque veut un CGColor au lieu d'un UIColor.
Vous devrez peut-être utiliser des chaînes au lieu de chiffres, mais cela fonctionne!
Mais vous pouvez utiliser des catégories pour proxy des propriétés telles que layer.borderColor. (À partir de ConventionalC CocoaPod)
CALayer + XibConfiguration.h:
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer(XibConfiguration)
// This assigns a CGColor to borderColor.
@property(nonatomic, assign) UIColor* borderUIColor;
@end
CALayer + XibConfiguration.m:
#import "CALayer+XibConfiguration.h"
@implementation CALayer(XibConfiguration)
-(void)setBorderUIColor:(UIColor*)color
{
self.borderColor = color.CGColor;
}
-(UIColor*)borderUIColor
{
return [UIColor colorWithCGColor:self.borderColor];
}
@end
Le résultat sera visible pendant l'exécution, pas dans Xcode.
Vous pouvez définir la plupart de ceux dans le générateur d'interface en ajoutant des attributs d'exécution aux éléments:
Pour layer.borderWidth = 2.0f; serait:
Sélectionnez le bouton et ajoutez un nouvel attribut
keypath: layer.borderWidth
type: Nombre Valeur 2
Ces modifications ne seront pas visibles dans le générateur d'interface, uniquement lors de l'exécution
oui tu peux dans le côté droit cliquer sur inspecteur d'identité, tu trouveras comme ça
cliquez sur +
dans User Defined Runtime Attributes
sélectionnez keypath
et modifiez-le
écrire le code comme ça
layer.cornerRadius
et dans Type
changez le type en number
et définissez la valeur requise comme ceci
u peut également changer les couleurs du texte et tant d'autres.
Codage heureux