有没有像CSS文本转换这样的东西:iOS UILabel的大写

时间:2012-12-07 09:47:45

标签: ios cocoa-touch uinavigationbar

我有一个UINavigationBar标题我想把所有字母都大写,所以'word'变成'WORD'。

我想对此导航栏中的按钮执行相同的操作。

我想知道是否有类似CSS text-transform:uppercase;属性的地方可以改变单词的视觉外观,但是一旦检索到它的值,它仍然会返回其原始值。

提前谢谢

3 个答案:

答案 0 :(得分:1)

这实际上比你想象的要简单。您可以使用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.

答案 1 :(得分:0)

有!

NSString *myLowercaseString = @"a lowercase string";
NSString *myUppercaseString = [myLowercaseString uppercaseString];

如果您NSLog (@"%@", myUppercaseString);,您将获得以下输出:

  

小写字符串

然后,您可以将按钮或导航栏的文本属性设置为字符串。

答案 2 :(得分:0)

因为使用[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;