【问题标题】:Disable line breaking after certain words在某些单词后禁用换行
【发布时间】:2014-10-13 09:07:20
【问题描述】:

我的应用程序中几乎没有 UILabel。通过将 numberOfLines 设置为 0,将它们全部设置为多行。通过这种方式,其中一些有 1 行,一些有 2。我的问题是,根据这个应用程序的语言语法,某些单词不应该在末尾一行。

例如,让我们有一句话:“约翰正在收集化石和邮票”。

这一行将足够长,以便在单词“and”之后出现换行符。根据语法,这不应该发生,所以我想在这个词之前换行,所以在换行之后代替这个:

John is collecting fossils and
stamps

我想得到:

John is collecting fossils
and stamps

有可能实现吗?我正在使用 iOS 7 及更高版本,因此无需关心与旧 iOS 版本的兼容性。

【问题讨论】:

    标签: objective-c uilabel line-breaks


    【解决方案1】:

    解决方案是使用 2 个方法创建 UILabel 的子类。假设,我只想在单词“a”之后禁用换行(类似的解决方案可以是多个单词):

    - (void)setText:(NSString*)newText {
    
        [super setText:[self fixSpaces:newText]];
    
    }
    
    - (NSString*)fixSpaces:(NSString*)originalText {
    
        NSMutableString* tempString = [[NSMutableString alloc] initWithString:originalText];
        [tempString replaceOccurrencesOfString:@"a " withString:@"a " options:NSLiteralSearch range:NSMakeRange(0, tempString.length)];
        return tempString;
    
    }
    

    将被替换的字符串是“a”,即标准的“a”和空格。将替换它的字符串在屏幕上看起来相同,但它是“a”和不间断空格(在 MAC - 选项 + 空格上)。以将文本设置为 UILabel 的标准方式设置任何文本将始终按需要工作,但将字符串与标签文本进行比较将不起作用(但很容易通过用空格替换不可破坏的空格进行比较来解决此问题)。在 storyboard 或 nib 中设置文本自然是行不通的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多