【问题标题】:Find UILabel bottom position so a second UILabel can be created below找到 UILabel 底部位置,以便可以在下面创建第二个 UILabel
【发布时间】:2013-04-22 23:39:47
【问题描述】:

我正在创建一篇新文章。正在为文章标题添加UILabel。标题文本有时可能是一、两或三行文本。然后我需要在标题下方创建一个UILabel

由于标题具有动态高度,我无法定位日期 UILabel

是否有计算得到我的UILabel 框架的底部位置?

注意:我使用siteToFit 来确保UILabel 的框架适合。

// Text
    UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, self.view.bounds.size.width-20, 50)];
    //title.backgroundColor = [UIColor clearColor];
    title.backgroundColor = [UIColor redColor];
    title.text = self.firstItem.title;
    //title.text = @"This is a test of a short title that is a little longer";
    title.textColor = [UIColor whiteColor];
    title.layer.shadowColor = [UIColor blackColor].CGColor;
    title.layer.shadowOffset = CGSizeMake(0, 0);
    title.layer.shadowRadius = 0.6;
    title.textAlignment = NSTextAlignmentLeft;
    title.layer.shadowOpacity = 1.0;
    title.layer.masksToBounds = NO;
    title.font = [UIFont boldSystemFontOfSize:16.0];
    title.numberOfLines = 0;
    [title sizeToFit];

    [self.firstNewsItemBackgroundView addSubview:title];
    self.cachedParalax = self.firstNewsItemBackgroundView.frame;

    // Fix positioning
    title.center = CGPointMake(title.center.x, self.imageView.frame.size.height - title.frame.size.height);

    // Date
    UILabel *titleDate = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, self.view.bounds.size.width-20, 50)];
    titleDate.backgroundColor = [UIColor clearColor];
    titleDate.text = self.firstItem.publishedDateString;
    titleDate.textColor = [UIColor whiteColor];
    titleDate.layer.shadowColor = [UIColor blackColor].CGColor;
    titleDate.layer.shadowOffset = CGSizeMake(0, 0);
    titleDate.layer.shadowRadius = 0.7;
    titleDate.textAlignment = NSTextAlignmentLeft;
    titleDate.layer.shadowOpacity = 0.95;
    titleDate.layer.masksToBounds = NO;
    titleDate.font = [UIFont italicSystemFontOfSize:12.0];
    titleDate.numberOfLines = 0;
    [title sizeToFit];
    [self.firstNewsItemBackgroundView addSubview:titleDate];

    // Fix positioning
    CGRect frame = titleDate.frame;
    titleDate.frame = CGRectMake(10, title.center.y + (title.frame.size.height/2), frame.size.width, frame.size.height);

【问题讨论】:

    标签: ios objective-c uilabel cgrect


    【解决方案1】:

    嗯,看来你打错了。您再次调用 [title sizeToFit] 而不是 [titleDate sizeToFit],这可能是问题的一部分。

    至于假设 10px 空间定位您的日期标签:

    CGRect dateFrame = titleDate.frame;
    dateFrame.origin.y = title.frame.origin.y + title.frame.size.height + 10; 
    [titleDate setFrame:dateFrame]
    

    【讨论】:

    • 谢谢。我也意识到我不应该尝试在标题上设置center,而应该设置框架。
    • 是的,我只在尝试对齐多个视图的中心时使用中心。
    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2013-07-22
    • 2016-01-12
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多