【问题标题】:How can I fix a UIView to the bottom of the screen?如何将 UIView 固定到屏幕底部?
【发布时间】:2013-01-29 08:14:01
【问题描述】:

我正在开发一个关闭自动布局并默认设置为 Iphone 5 的应用程序。现在我在屏幕底部有一个 UIView,当我在 IB 中的大小选项之间切换时,UIView 正确地向上移动以修复自身到屏幕底部。但是,当我在我的 iPhone 4 或模拟器上进行测试时,它并没有向上移动,而是被切断了。

我怎样才能让应用程序底部的 UIView 向上分流到较小的 iPhone 4?

看下面的例子

我基本上希望白色盒子向上分流以填补灰色盒子下方的空隙。

更新

在视图层次结构方面,有一个包含视图,然后您看到的白色部分是一个简单的 UIView(白色背景),里面有一个滚动视图。该项目相当新,因此设置非常简单,并且没有任何代码可以定位任何 UIView。

【问题讨论】:

  • 您在使用自动布局吗?还是 AutoresizingMask?
  • 我关闭了自动布局,我正在使用自动调整大小功能
  • @IconicDigital,您的 4 英寸和 3.5 英寸图像没有进行同类比较...查看我的更新答案

标签: ios cocoa-touch


【解决方案1】:

要获取 Y 坐标,获取屏幕高度,减去主视图上方的任何 UI 元素(如状态栏)并减去您放置的 UIView 的高度。例如:

float y = [UIScreen mainScreen].bounds.size.height - [UIApplication sharedApplication].statusBarFrame.size.height - myView.frame.size.height;
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)];

这是一个非常典型的完整示例...2013...这在顶部带有导航栏的 UITableViewController 中运行良好,并且您使用自动布局。

Position a UIView relative to the bottom of the parent view?

希望对某人有所帮助。

【讨论】:

    【解决方案2】:

    你应该让你的弹簧和支柱(Autosizing mask)设置这样的东西......

    然后视图将保持它与屏幕底部的距离。

    更新

    在您的评论中,您说您正确设置了此设置,但视图仍被向下推。但是,您问题中的图像无法进行比较。在 4 英寸版本中,您的视图似乎向上滚动到屏幕顶部上方,而 3.5 英寸版本不是这种情况。我怀疑这就是原因(或者只是 b/c 您必须向上滚动 4 英寸以适应屏幕上的问题?)...您可以检查并更新您的问题,并提供有关您的视图层次结构的更多详细信息。

    【讨论】:

    • 嗨,我已经这样设置了,但它仍然忽略它。
    • @IconicDigital - 好吧,那很奇怪。您是否有任何代码制作/在视图上设置框架参数或其他类似的东西?
    • 有趣的是,如果我在 IB 中切换大小,它会很好地移动它。如果您然后在模拟器中对其进行测试,则会将其切断。
    • @IconicDigital,这就是为什么您需要向我们提供有关您的视图层次结构的更多信息 - 特别是您是否在代码中设置 any 框架信息?这不会出现在 IB 中,但会出现在模拟器中。
    【解决方案3】:

    在关闭自动布局的情况下,您在屏幕上放置视图的位置是一个固定值。要进行此自动调整,您需要一些代码。您将需要使用autoresizingMask。下面是一个使用 autoresizingMask/ 的例子

    UIView *view = [[UIView alloc] init];
    [view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin];
    

    【讨论】:

      【解决方案4】:

      最简单的方法是选择您的视图,然后转到编辑器 -> 引脚 -> 底部空间到 SuperView。无论设备分辨率如何,此选项都会将您的视图固定到容器视图的底部。

      【讨论】:

        【解决方案5】:

        扩展@Joel 答案,对于 iOS 7,我们不需要减去 statusBar 高度。

        float y = [UIScreen mainScreen].bounds.size.height - myView.frame.size.height;
        [myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-11-18
          • 2020-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          相关资源
          最近更新 更多