Vertically align UILabel

前端 未结 10 1579
故里飘歌
故里飘歌 2020-12-31 10:34

I am trying to vertically align the text in the UILabel view of my app. The problem is that I want the text to be vertically aligned to the top and the size of the label to

10条回答
  •  再見小時候
    2020-12-31 10:53

    I'm the author of FXLabel, and whilst I don't know Manish, I believe he was trying to help (if he was advertising for me, I certainly didn't ask him to, and I'm not paying him - sorry Manish!).

    One of FXLabel's features is that it respects the UIContentMode property of the label, as set in Interface builder. This means you can set label.contentMode = UIViewContentModeTop; to align the text to the top of the label view (which doesn't work for a regular UILabel). The relevant example is here:

    https://github.com/nicklockwood/FXLabel/tree/master/Examples/Text%20Alignment

    FXLabel is a drop-in subclass of UILabel, so I think it's a pretty good solution for the question being posed. However if the poster would rather solve the problem without using a 3rd party library (which is understandable) then here is the code to do it:

    CGRect labelFrame = CGRectMake(22, 50, 280, 150);
    UILabel *myLabel = [[UILabel alloc] initWithFrame:labelFrame];
    [myLabel setText:finalRecipe];
    [myLabel setBackgroundColor: [UIColor lightGrayColor]];
    [myLabel setNumberOfLines:0];
    
    CGFloat fontSize = 0.0f;
    labelFrame.size = [myLabel.text sizeWithFont:myLabel.font
                                    minFontSize:myLabel.minimumFontSize
                                 actualFontSize:&fontSize
                                       forWidth:labelFrame.width
                                lineBreakMode:myLabel.lineBreakMode];
    
    myLabel.frame = labelFrame;
    [self.view addSubview:myLabel];
    

    Note:(This is untested, so apologies if there are any typos)

提交回复
热议问题