对iOS有点新,但学习速度很快。
我的应用中有很多标签和UIText字段。在真正的iPad上观看之后,我决定将一系列字段中的文字改为Helv Neu浓缩粗体尺寸24.我认为必须有更好的方法,我可以设置某种类型的风格x个字段,然后只设置样式,但我找不到那样的东西。
帮助!
答案 0 :(得分:3)
一种选择是使用Vesper发明的系统DB5来存储plist中的字体,颜色等。然后,当您想要更改它们时,您可以永久地在一个地方更改它们。您甚至可以让您的应用程序从服务器下载新的Plist,允许您远程修改应用程序的外观。
另一种选择是使用常量文件来定义Attributed String字典。
+ (NSDictionary *) biggerLetterSpacingText
{
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:[NSNumber numberWithFloat:1.3] forKey:NSKernAttributeName];
return dictionary;
}
+ (NSDictionary *) linkAttributes
{
static NSMutableDictionary *dictionary;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dictionary = [NSMutableDictionary dictionary];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
[dictionary setObject:paragraphStyle forKey:(NSString *)kCTParagraphStyleAttributeName];
});
UIColor *tintColor = [[(MyAppDelegate *)[[UIApplication sharedApplication] delegate] window] tintColor];
UIColor *colorToUse;
if (CGColorEqualToColor(tintColor.CGColor, [UIColor blueColor].CGColor)) {
// links are enabled
colorToUse = [UIColor blueColor];
} else {
// grey them out
colorToUse = tintColor;
}
[dictionary setObject:colorToUse forKey:(NSString *)kCTForegroundColorAttributeName];
return dictionary;
}
此特定代码可用于着色iOS 7上的超链接。如果有帮助,请随意使用更简单的内容。
顶部的dispatch_once
代码确保始终使用一个字典(因此,每次调用此方法时,最终都不会分配新字典。
底部的代码根据当前应用的色调颜色调整色调颜色。因此,如果弹出UIAlertView或UIActionSheet,所有链接都可以从蓝色变为灰色。
使用它(例如在标签上):
NSString *text = @"Hello, world!";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
[attributedString addAttributes:[MyConstants linkAttributes] range:NSMakeRange(0, [text length])];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.attributedText = attributedString;
答案 1 :(得分:0)
您应该使用类别。这是一个例子:
@interface UILabel (FontName)
- (void)setFontName:(NSString *)name;
@end
@implementation UILabel (FontName)
- (void)setFontName:(NSString *)name
{
self.font = [UIFont fontWithName:name size:self.font.pointSize];
}
@end
答案 2 :(得分:0)
我意识到这是一个古老的问题,但是这里有一些框架的其他建议,允许您在应用程序中使用可重用的样式:
开源:
封闭源(但免费):