UILabel在iphone中的文本对齐问题?

时间:2014-01-31 04:37:57

标签: ios iphone uilabel

我从服务器获取JSON响应,并将该内容设置为UILabel,有时文本将是一行,有时文本将是10行。所以我在{{内部显示UILabel 1}}。但是我在UIScrollView

中得到了空白区域

这是我的截图..

enter image description here

enter image description here

目前我正在使用故事板和自动布局

所以我想在UILabel中避免这些空白空间。请给我这个对齐问题的建议。??

更改UILabel身高的代码,但这对我不起作用

UILabel

6 个答案:

答案 0 :(得分:2)

这可以帮助你

NSDictionary *attributesDic= [NSDictionary dictionaryWithObjectsAndKeys:
                                                       [UIFont fontWithName:@"FontName" size:15], NSFontAttributeName,nil];

CGRect frame = [label.text boundingRectWithSize:CGSizeMake(263, 2000.0)
                                                 options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDic context:nil];

CGSize size = frame.size;

及其可能的答案Dynamically resize label in iOS 7或您可以尝试此https://gist.github.com/danielphillips/1005520

答案 1 :(得分:2)

使用[labDetails sizeToFit]。如果您有尺寸限制,请使用[sizeThatFits:CGSizeMake(WidthConstraint, HeightConstraint)],然后使用其结果设置标签框。

答案 2 :(得分:2)

为什么不使用UIButton代替UILabelUIButton具有垂直对齐文字的属性,而UILabel则没有。

UIButtonuserInteractionEnabled = NO一起使用。在这里查看我的回复:Vertically align UILabel

答案 3 :(得分:2)

记住一个拇指规则 - 在使用自动布局时不应设置框架 - 您将违反Autolayout基本概念 - 而是尝试在您的情况下以编程方式自动布局约束

-(void)awakeFromNib{

[super awakeFromNib];
for(NSLayoutConstraint *cellConstraint in self.constraints){
    [self removeConstraint:cellConstraint];
    id firstItem = cellConstraint.firstItem == self ? self.contentView : cellConstraint.firstItem;
    id seccondItem = cellConstraint.secondItem == self ? self.contentView : cellConstraint.secondItem;
    NSLayoutConstraint* contentViewConstraint =
    [NSLayoutConstraint constraintWithItem:firstItem
                             attribute:cellConstraint.firstAttribute
                             relatedBy:cellConstraint.relation
                                toItem:seccondItem
                             attribute:cellConstraint.secondAttribute
                            multiplier:cellConstraint.multiplier
                              constant:cellConstraint.constant];
    [self.contentView addConstraint:contentViewConstraint];
}
}

答案 4 :(得分:2)

你已经修改了UILable大小而不必使用动态大小UILable。

在此之前,您需要计算文本/字符串的大小

 #define FONT_SIZE 15.0f
 #define LABEL_CONTENT_WIDTH 320.0f
 #define LABEL_CONTENT_MARGIN 10.0f

NSString *text = @"YOUR TEXT HERE";
CGSize constraint = CGSizeMake(LABEL_CONTENT_WIDTH - (LABEL_CONTENT_MARGIN * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = MAX(size.height, 44.0f);

计算尺寸后,将它们应用到您的标签上,如下所示

[labDetails setFrame:CGRectMake(labDetails.frame.origin.x, labDetails.frame.origin.y, labDetails.frame.size.width, MAX(height, 44.0f))];

如果您使用的是自动布局选项,请点击此处:Link

答案 5 :(得分:1)

使用上标签框的原点和大小,并根据设置的详细标签框架,使用标签的 sizeToFit 属性。

假设582618是您的标题标签,

像,

labDetails.frame=CGRectMake(5, title.frame.origin.x+title.frame.size.height+5, 300, 100);
[labDetails sizeToFit];