【问题标题】:in an iOS app, how can I get 2 elements to sit next to each other?在 iOS 应用程序中,如何让 2 个元素并排放置?
【发布时间】:2013-12-20 03:25:42
【问题描述】:

我是 iOS 开发新手,正在完成我的第一个教程。教程跳过的一件事是定位。我有一个列表,其中每个单元格都有一个图像,旁边有一些文本。至少在 Interface Builder 中是这样的。当我实际运行应用程序时,图像会出现在文本的顶部(即两者在屏幕左侧的位置完全相同)。

界面构建器

正在运行的应用程序

我本质上想要在 CSS 术语中是“float:left”,甚至只是每个元素的 x/y 坐标的相对定位(即,如果它在运行应用程序时看起来相同/相似)在故事板中),那就太好了。

在使用所有各种视图属性时,我没有找到任何可以定位视图的东西……我可以在 Interface Builder 中找到可以定位它们的属性,但这些设置似乎都没有运行时转移到应用程序中,并且图像/文本始终重叠显示。

对于这个新手问题,我深表歉意……这可能是一些简单/显而易见的事情,不知何故被我忽略了。

【问题讨论】:

    标签: ios interface-builder


    【解决方案1】:

    如果您使用 Xcode5 进行测试,应用程序将默认使用 AutoLayout 功能。而且您为此布局所做的约束似乎是错误的。如果您想使用 AutoLayout 将视图定位到正确的位置,您需要阅读苹果官方网站的一些材料。如果您没有太多时间学习,您可以尝试在没有 AutoLayout 的情况下编辑 xib。您可以在界面生成器的“文件检查器”中禁用自动布局。

    【讨论】:

      【解决方案2】:

      如果您是 iOS 开发新手(像我一样),您应该熟悉 AutoLayout,正如 Eric 的回答中所建议的那样。

      如果您正在寻找问题的快速解决方法,以下所有选项都对我有用:

      1. 选择标签,然后选择水平空间约束并将其删除。
      2. 选择标签并点击 cmd-plus(即 cmd+shift+equals)。这将立即删除所有定位约束。
      3. 关闭自动布局。

      还有其他方法可以解决我遇到的问题,但通常问题是 AutoLayout 约束不正确。

      【讨论】:

        【解决方案3】:

        如果您对代码感到满意,我建议您手动将框架设置为您使用CGRectMake(origin.x, origin.y, width, height) 定义的CGRect。您也可以使用自动布局设置来做到这一点,但我发现以编程方式定位元素给了我更大的灵活性,而且,作为一名程序员,这比试图找出界面构建器中的选项要容易得多。

        iOS 坐标系是自上而下,这意味着 y=0 是屏幕顶部,y=568 是屏幕底部(在 iPhone 5 上)。屏幕左侧的 X 为 0。

        坐标系与它们所在的视图相关。在您的情况下,您的元素位于UITableCell 中,渲染引擎为其提供了自己的坐标系。因此,如果您希望图像距离单元格边缘的顶部 10 像素,距离单元格边缘的左侧 10 像素(在 css 中为 padding:10px),您可以像这样设置它的框架:

        image.frame = CGRectMake(10, 10, 50, 50)
        

        ...假设图像为 50x50。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-24
          • 2016-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-02-22
          • 1970-01-01
          • 2016-09-05
          相关资源
          最近更新 更多