在屏幕底部放置一个标签

Posted

技术标签:

【中文标题】在屏幕底部放置一个标签【英文标题】:Place a label on the bottom of the screen 【发布时间】:2013-12-19 23:22:19 【问题描述】:

我编写了以下代码来获取屏幕底部的标签,具体取决于设备是 iphone5 还是 iphone4/4s。

我想知道我还有另一种方式......例如自动布局?

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    CGRect frame;
    if ([UIScreen mainScreen].bounds.size.height == 568) 
        frame = CGRectMake(140, 500, 320, 100);
     else 
        frame = CGRectMake(140, 410, 320, 100);
    

    UILabel *iconAdLabel = [[UILabel alloc]init];
    iconAdLabel.frame = frame;
    iconAdLabel.font = [[UIFont preferredFontForTextStyle:UIFontTextStyleBody] fontWithSize:11.0];
    iconAdLabel.text = @"SOME NICE TEXT HERE";

    [self.view addSubview:iconAdLabel];


【问题讨论】:

是的,自动布局还有另一种方式 【参考方案1】:
- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    UILabel *iconAdLabel = [[UILabel alloc]init];
    iconAdLabel.frame = CGRectMake(0,self.view.frame.size.height-100,320,100);
    iconAdLabel.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

    [self.view addSubview:iconAdLabel];


【讨论】:

【参考方案2】:

确实如此。您绝对不想在位置值中硬编码。使用界面生成器向标签添加约束。 Apple 关于 Auto-layout 的文档非常好,也可以给你一些想法。

【讨论】:

【参考方案3】:

您可以使用简单的数学表达式,而不是硬编码值或使用约束和接口生成器:

CGFloat const labelHeight = 100;
CGRect frame = CGRectMake(0, CGRectGetHeight([[UIScreen mainScreen] bounds]) - labelHeight, 320, labelHeight);

【讨论】:

以上是关于在屏幕底部放置一个标签的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 需要根据 UILabel 大小进行扩展但保持底部标签栏

NSLayoutContraints:如何将底部视图放置在两个标签中较高者的下方?

在侧面反应导航标签栏?

为按钮添加标签

如何在所有屏幕上放置一个带有时间的标签

WIX Navigation V2 - 推送到新屏幕时隐藏底部标签栏