【问题标题】:Programmatically align a label from bottom of screen regardless of device - iOS无论设备如何,以编程方式从屏幕底部对齐标签 - iOS
【发布时间】:2015-01-29 19:40:50
【问题描述】:

我试过了

self.lblTimer = [[UILabel alloc] initWithFrame:CGRectMake(x,y,width,height)]; 

..但是由于我要定位的标签位于屏幕底部,因此当我切换设备时它会消失。我正在尝试使标签从左侧向内 10 像素,从底部向上 10 像素。无论是在 iPhone 4、5、6 还是 6 plus 上查看,它都应该看起来一致。

【问题讨论】:

    标签: ios alignment label device


    【解决方案1】:

    那么,您的问题是关于 X 和 Y,对吧? iOS中的点从屏幕的左上角开始,所以屏幕的左上角是(0,0)。

    如果沿左边缘向上/向下移动,X 坐标将继续为 0。因此,如果您希望左边缘右侧 10 个点,则 X 将为 10。

    屏幕底部可以这样计算:

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    CGFloat screenHeight = screenRect.size.height;
    

    在这里,变量 screenHeight 将是屏幕的底线。因此,如果您想要在线上方 10 点,则需要获得 (screenHeight - 10)。

    但是,正如 Lyndsey Scott 在下面的 cmets 中所提到的,这会将标签的左上角置于顶部 screenHeight - 10 中,这可能(很可能值为 10)将您的标签置于视线之外。 要解决这个问题,您还需要减去标签的高度,以便标签在正确的位置可见。

    所以你的最终答案是:

    CGRectMake(10,(screenHeight - height - 10),width,height);
    

    【讨论】:

    • 为什么?我错过了什么?边界与屏幕尺寸?
    • 你必须从 y 值中减去标签的高度。
    • 哦..是的,这是真的。但这会将标签的左上角放在他想要的位置
    • 是的。因此,使用您的公式设置标签会将 OP 的标签置于屏幕之外。应该是CGRectMake(10,(screenHeight - height - 10),width,height);
    • 完成!感谢您了解
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多