简体   繁体   中英

How to add UILabel above UILabel

If i set bottomLabel .text = Chinese character,i can't see the aboveLabel when i run it and if i debug view hierarchy i can see it.so what's the problem?

    UILabel *bottomLabel  = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 200, 40)];
    bottomLabel.backgroundColor = [UIColor redColor];
    bottomLabel.text = @"中文";
    [self.view addSubview:bottomLabel];   
    UILabel *aboveLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, 30)];
    aboveLabel.backgroundColor = [UIColor greenColor];
    aboveLabel.text = @"aboveLabel";
    [bottomLabel addSubview:aboveLabel];

why dont you use NSMutableAttributedString for this with one LABEL.

NSString *text1 = @"Hello";
NSString *date1 = @"                                               12.05 Pm\n";

NSString *text2 = @"World";
NSString *date2 = @"                                               11.00 AM";


self.lbl.numberOfLines = 0;

NSString * str = [text1 stringByAppendingString:date1];
NSString * str2 = [text2 stringByAppendingString:date2];



UIFont *text1Font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:10];
NSMutableAttributedString *attributedString1 = [[NSMutableAttributedString alloc] initWithString: str attributes:@{ NSFontAttributeName : text1Font }];
NSMutableParagraphStyle *paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle1 setAlignment: NSTextAlignmentLeft];
[paragraphStyle1 setLineSpacing:1];
[attributedString1 addAttribute:NSParagraphStyleAttributeName value: paragraphStyle1 range:NSMakeRange(0, [attributedString1 length])];


UIFont *text2Font = [UIFont fontWithName:@"HelveticaNeue-Medium" size:10];
NSMutableAttributedString *attributedString2 = [[NSMutableAttributedString alloc] initWithString: str2 attributes:@{NSFontAttributeName : text2Font }];
NSMutableParagraphStyle *paragraphStyle2 = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle2 setLineSpacing:1];
[paragraphStyle2 setAlignment: NSTextAlignmentLeft];
[attributedString2 addAttribute:NSParagraphStyleAttributeName value: paragraphStyle2 range:NSMakeRange(0, [attributedString2 length])];

   [attributedString1 appendAttributedString:attributedString2];

   [self.lbl setAttributedText:attributedString1];

在此处输入图片说明

because above label is overlap on bottom label like above image so you not display that if you see that label above label x position change then it display.

if x value set 50 then you display bottm label.

您正在尝试加入aboveLabelbottomLabel 。相反都添加到一个视图或self.view。

You are adding aboveLabel as subview of bottomLabel hence it doesnot get displayed when you assign chinese character to it. You can see it view hierarchy as it is assigned a frame and added as subview. If you want to add one UILabel above UILabel you can add both labels as subview of common parent view. ie

[self.view addSubview:bottomLabel]; 
[self.view addSubview:aboveLabel];
UILabel *bottomLabel  = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 200, 40)];
    bottomLabel.backgroundColor = [UIColor redColor];
    bottomLabel.text = @"中文";
    [self.view addSubview:bottomLabel];
    UILabel *aboveLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(bottomLabel.frame)+10, 60, 30)];
    aboveLabel.backgroundColor = [UIColor greenColor];
    aboveLabel.text = @"aboveLabel";
    [self.view addSubview:aboveLabel];

Try this code

Objective - C

    UILabel *bottomLabel  = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 30)];
    bottomLabel.backgroundColor = [UIColor redColor];
    bottomLabel.text = @"中文";
    [self.view addSubview:bottomLabel];   
    UILabel *aboveLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 0, 60, 30)];
    aboveLabel.backgroundColor = [UIColor greenColor];
    aboveLabel.text = @"abc";
    [bottomLabel addSubview:aboveLabel];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM