How to display superscript % character as string in UIlabel?

后端 未结 2 1173
别那么骄傲
别那么骄傲 2020-12-29 12:25

How to display superscript % character as string in UIlabel? I know % does not exist in unicode as a superscript but is there is any way we can display % as a superscript in

相关标签:
2条回答
  • 2020-12-29 13:02

    For a simple to use Swift solution, you might want to checkout HandyUIKit. After importing it into your project (e.g. via Carthage – see instructions in README) you can do something like this:

    import HandyUIKit
    
    "57^{%}".superscripted(font: UIFont.systemFont(ofSize: 20, weight: .medium))
    

    This line will return an NSAttributedString which will look exactly like what you're looking for. Just assign it to a UILabels attributedText property and that's it!


    If you're looking for subscripting a text, simply use subscripted(font:) instead. It will recognize structures like CO_{2}. There's also superAndSubscripted(font:) if you want to combine both.

    See the docs for more information and additional examples.

    0 讨论(0)
  • 2020-12-29 13:17

    I found this post on Stackoverflow on superscript styling text using attributed string:

    NSAttributedString superscript styling

    So using that, I hacked up this demo:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    
        UIFont *font = [UIFont fontWithName:@"Helvetica" size:20];
    
        UILabel *textBlock1 = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height / 2.0)];
        textBlock1.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:1.0];
        textBlock1.textAlignment = NSTextAlignmentCenter;
        textBlock1.font = font;
    
        textBlock1.text = @"57%";
    
    
    
    
    
        UILabel *textBlock2 = [[UILabel alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height / 2.0, self.view.bounds.size.width, self.view.bounds.size.height / 2.0)];
        textBlock2.backgroundColor = [UIColor colorWithRed:0.9 green:0.9 blue:0.9 alpha:1.0];
        textBlock2.textAlignment = NSTextAlignmentCenter;
    
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"57%"
                                                                                             attributes:@{NSFontAttributeName: font}];
        [attributedString setAttributes:@{NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:10]
                                          , NSBaselineOffsetAttributeName : @10} range:NSMakeRange(2, 1)];
    
        textBlock2.attributedText = attributedString;
    
    
    
        [self.view addSubview:textBlock1];
        [self.view addSubview:textBlock2];
    }
    

    The result:

    enter image description here

    0 讨论(0)
提交回复
热议问题