UILabel + UIButton iOS 本地化最佳实践

标签 ios localization nsstring

<分区>


想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它.

已关闭 6 年前

我认为大多数开发者在尝试对应用进行多语言本地化时都遇到过这个问题。

例如,我需要将下面的句子本地化为不同的语言,但是有一些单词用户可以单击以转到另一个页面。现在,如果其他语言中的单词比英语长或短,则很难使它们作为整个句子正确对齐,尤其是当有两个可点击部分时。对于点击部分,我想我们只能使用UIButton,或者还有其他好的建议吗?我相信一定有某种工业化的方法来做到这一点。

“条款”和“隐私政策”可点击:

enter image description here

最佳答案

因此,您可以按照以下步骤来完成您的工作。

  1. 创建一个 NSMutableString

    NSString *initString = @"You agree to our terms and policy";
    NSMutableAttributedString *nsms = [[NSMutableAttributedString alloc] initWithString:initString];
    [nsms addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:[initString rangeOfString:@"terms"]];
    [nsms addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:[initString rangeOfString:@"policy"]];
    [nsms addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:NSMakeRange(0, initString.length)];
    [nsms addAttribute:NSLinkAttributeName value:[NSURL URLWithString:@"http://stackoverflow.com/questions/40311151/ios-localization-best-practice-for-uilabel-uibutton"] range:[initString rangeOfString:@"policy"]];`
    
  2. 将属性字符串设置为 UITextView

    UITextView *TextView = [[UITextView alloc] initWithFrame:CGRectMake(20, 100, [[UIScreen mainScreen] bounds].size.width - 40, 100)];
    TextView.delegate = self;
    TextView.attributedText = nsms;
    TextView.editable = NO;
    [self.view addSubview:TextView];
    
  3. UITextView 的委托(delegate)函数内部

    - (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction {
    
           // According to range condition/url condition
          [self goToOtherPage];
          return NO;
    }
    

这里,goToOtherPage只是一个自定义函数,您可以在其中为您的segue编写代码

关于UILabel + UIButton iOS 本地化最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311151/

上一篇:ios - 添加到导航堆栈的多个调用

下一篇:iOS 小部件扩展初始 UIViewController

相关文章:

html - iOS 邮件客户端不呈现 html 电子邮件

ios - 在左侧对齐 UIButton 的图像和 UILabel

ios - iOS11中的导航栏问题

xml - 使用 MSXML 加载 XML 时如何获得英文错误消息

c# - 通过显式本地化获取资源值(value)

ios - NSString 没有得到正确的字符串

objective-c - 在 objective-c 中删除反斜杠 ('\' )

ios - 如何创建许多相似的 ViewController

AngularJS:将本地化的用户输入数据存储在翻译 json 文件或数据库中

objective-c - 如何将 NSString 从一个 View Controller 传递到另一个 View Controller ?