【发布时间】:2012-12-07 09:47:44
【问题描述】:
我有一个UINavigationBar,我想将所有字母大写,这样“word”就变成了“WORD”。
我想对这个导航栏中的按钮做同样的事情。
我想知道是否有类似 CSS text-transform:uppercase; 属性的东西可以改变单词的视觉外观,但一旦检索到它的值,它仍然返回它的原始值。
提前谢谢你
【问题讨论】:
标签: ios cocoa-touch uinavigationbar
我有一个UINavigationBar,我想将所有字母大写,这样“word”就变成了“WORD”。
我想对这个导航栏中的按钮做同样的事情。
我想知道是否有类似 CSS text-transform:uppercase; 属性的东西可以改变单词的视觉外观,但一旦检索到它的值,它仍然返回它的原始值。
提前谢谢你
【问题讨论】:
标签: ios cocoa-touch uinavigationbar
这实际上比您想象的要简单。你可以使用 NSString 的uppercaseString 来实现。
[myLabel setText:[myString uppercaseString]];
或者,更适合您的需求:
for (UIBarButtonItem *button in self.navigationItem.rightBarButtonItems) { //Your nag bar
[button setTitle:[[button title] uppercaseString]];
}
编辑:字符串不变的示例。
NSString *myString = @"hello";
NSString *mySecondString = @"world!";
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:[myString uppercaseString] style:UIBarButtonItemStyleBordered target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:[mySecondString uppercaseString] style:UIBarButtonItemStyleBordered target:self action:nil];
[self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects:item1,item2, nil]];
NSLog(@"%@ | %@",myString,mySecondString);//this will output the same as when it was originally created.
【讨论】:
button.title 时它将返回word 所以你的意思是在[button setTitle:[[button title] uppercaseString]] 之后button.title 仍然会返回word 而不是@987654330 @?
text-transform 相关,而是与 javascript toUpperCase() 相关。不过感谢您的提示。
由于使用[myString uppercaseString] 的缺点是返回一个大写字符串(嗯,这实际上不是缺点..)而不是原始字符串,因此一种选择是设置一个 UILabel 全大写字体(Copperplate 只是全大写字体的一个示例,您可能会找到更好的字体):
int height = navigationController.navigationBar.frame.size.height;
int width = navigationController.navigationBar.frame.size.width;
UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, height)];
navLabel.backgroundColor = [UIColor clearColor];
navLabel.textColor = [UIColor whiteColor];
navLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
navLabel.font = [UIFont fontWithName:@"Copperplate" size:18];
navLabel.textAlignment = UITextAlignmentCenter;
self.navigationItem.titleView = navLabel;
【讨论】:
uppercaseString 甚至不修改您的原始文本,只是复制大写。
有!
NSString *myLowercaseString = @"a lowercase string";
NSString *myUppercaseString = [myLowercaseString uppercaseString];
如果你NSLog (@"%@", myUppercaseString);,你会得到如下输出:
小写字符串
然后您可以将按钮或导航栏的文本属性设置为您的字符串。
【讨论】: