【问题标题】:Is there any such thing like CSS text-transform:uppercase for iOS UILabel有没有像 CSS text-transform:uppercase for iOS UILabel 这样的东西
【发布时间】:2012-12-07 09:47:44
【问题描述】:

我有一个UINavigationBar,我想将所有字母大写,这样“word”就变成了“WORD”。

我想对这个导航栏中的按钮做同样的事情。

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

提前谢谢你

【问题讨论】:

    标签: ios cocoa-touch uinavigationbar


    【解决方案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.
    

    【讨论】:

    • 只是在上面回复您的评论:但是在检索button.title 时它将返回word 所以你的意思是在[button setTitle:[[button title] uppercaseString]] 之后button.title 仍然会返回word 而不是@987654330 @?
    • @zanona 不,抱歉,我的意思是原始字符串会返回相同的内容,我添加了一个这样的示例。我看到了这样做的另一种方式的优点,我只是想向您展示选项。我编辑了我的帖子以更好地解释我的意思。
    • +1 谢谢!我明白你的意思,这也很好。虽然我担心这不能与仅作用于表示层的 css text-transform 相关,而是与 javascript toUpperCase() 相关。不过感谢您的提示。
    【解决方案2】:

    由于使用[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;
    

    【讨论】:

    • 这是一个很好的替代 tilo,感谢您的想法。虽然依靠字体本身这很好,因为它不是字符串操作,而只是一种视觉辅助。
    • @zanona 字符串操作有什么问题? uppercaseString 甚至不修改您的原始文本,只是复制大写。
    【解决方案3】:

    有!

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

    如果你NSLog (@"%@", myUppercaseString);,你会得到如下输出:

    小写字符串

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

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多