【问题标题】:UILabel out of app frameUILabel 超出应用程序框架
【发布时间】:2013-04-18 14:03:28
【问题描述】:

我的标签超出了应用框架:

只有在滚动时我才能看到其余部分:

    [_scroller setScrollEnabled:YES];
    [_scroller setContentSize:CGSizeMake(320, 600)];

    self.description = [_description stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    [self positionLabel:self.lblTitle withText:self.stitle withY:10];
    [self positionLabel:self.lblPubDate withText:self.pubDate withY:CGRectGetMaxY(self.lblTitle.frame)+10 ];
    [self positionLabel:self.lblDescription withText:self.description withY:CGRectGetMaxY(self.lblPubDate.frame)+10 ];

}

-(void)positionLabel:(UILabel*)lbl withText:(NSString*)text withY:(CGFloat)Y
{
    lbl.textAlignment = UITextAlignmentRight;
    lbl.text = text;
    lbl.numberOfLines = 0;
    lbl.lineBreakMode = NSLineBreakByWordWrapping;
    CGSize size = [self calculateSize:lbl];
    //FIXED
    [lbl setFrame:CGRectMake(10 , Y , (size.width>300)?size.width:300 , size.height)];
    [_scroller addSubview:lbl];
}



-(CGSize)calculateSize:(UILabel*)lbl
{
    CGSize size = [lbl.text sizeWithFont:lbl.font
                       constrainedToSize:CGSizeMake(280, MAXFLOAT)
                           lineBreakMode:UILineBreakModeWordWrap];
    return size;
}

什么会导致这个问题? xib中的标签可能是相关的?

【问题讨论】:

  • 你的滚动视图的 y 坐标是多少?
  • 在哪里可以看到?
  • 你可以在你的XIB中看到。
  • 在尺寸检查器中 --> 查看我可以看到 Y = 0
  • 只需要设置滚动视图的y坐标为64即可。

标签: iphone ios xcode uiscrollview uilabel


【解决方案1】:

您没有正确设置滚动视图的y co-ordinate,所以只需设置正确的滚动视图框架。

将你的滚动视图添加为子视图后,只需设置它的框架。

CGRect frame = yourScollView.frame;

frame.origin.y= frame.origin.y + 49; //49 is your navigationBar height.

[yourScollView setFrame:yourScollView.frame];

【讨论】:

  • 你做得很好,只需检查你的scrollView的框架
  • 你是如何制作你的滚动视图的
  • 你必须首先设置你的滚动视图框架
猜你喜欢
  • 2015-05-15
  • 1970-01-01
  • 2011-04-08
  • 2010-11-06
  • 2010-09-14
  • 2021-05-04
  • 2011-12-03
  • 2014-05-05
  • 2011-02-01
相关资源
最近更新 更多