问题标签 [ios-autolayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
120 浏览

ios - UIScrollivew 约束更改也重新加载内容?

我有一个包含 4 个表格视图的水平 UIScrollview。当用户在 tableview 中选择一行时,我添加一个标签并通过更改约束来更改滚动视图的大小。但是,在滚动视图大小更改后,无论用户在哪个表视图上,都会重新加载滚动视图并显示第一个表视图。然后它会崩溃。调试后,我发现原因是旧的 tableview 的数据比第一个少,显示它在 cellForRowAtIndexPath 中因数组绑定错误而崩溃。我的问题是为什么滚动视图会重新加载以及如何让它只是改变大小而不重新加载内容?

0 投票
0 回答
385 浏览

ios - 剪辑子视图不适用于自动布局约束

我有UIView自动布局约束。我的视图包含子视图。我有高度限制,我将其作为属性附加到我的视图控制器。

在视图中我设置了负载:

但我仍然看到子视图。所以我检查了情节提要中的剪辑子视图以获取该视图,但我仍然看到子视图。

0 投票
1 回答
153 浏览

ios - 如何根据适合嵌入的 UILabel 文本调整 UIContainerView 的大小

我有一个UIContainerView它的嵌入UIViewController包含一个UILAbel和两个UIButtonUILabel文本具有动态的行数,并根据行数进行扩展。我要问的是如何进行UIContainerView扩展以适应新的嵌入式标签尺寸?

autolayout constraints用来管理标签高度。

0 投票
1 回答
583 浏览

ios - 在 iOS 故事板中使用 AutoLayout 放置 UIImageView

我对 iOS 中的这个 AutoLayout 东西非常陌生,我很难找到好的文档来阅读和理解它的概念。

我需要做的是将 UIImageView 放在父视图内与父视图高度相关的位置。

我如何尝试实现这一点如下。

在此处输入图像描述

这适用于每种屏幕尺寸,但仅适用于纵向。当我向左或向右旋转设备时,我看不到 UIImageView 和景观设备顶部之间的间隙有任何变化。下图阐明了我在这里的意思。

在此处输入图像描述

但是当我使用情节提要看到预览时,它会按预期显示差距差异。

在此处输入图像描述

1.) 为什么当应用程序在真实设备上运行时不会发生这种情况?

2.) 检测到设备旋转时,我是否必须以编程方式更新约束?

3.) Top Layout Guide.Bottom X 和 Y 是否有任何常数值?

4.) 有没有其他方法可以放置这个 UIImageView?我需要的是将图像放置在任何方向的屏幕高度位置的 1/3 处。

0 投票
2 回答
66 浏览

ios - 如果我的子视图的大小与其父视图相同,如何使用 ctrl-drag 在 IB 中设置约束?

我在 IB 中的一个视图控制器中添加了一个子视图。它的大小与视图控制器的大小相同,我希望它是那样的。唯一的问题是现在我不能使用 ctrl-drag 和鼠标来参考它的超级视图来设置一些约束。有没有办法让我有一个子视图来填充它的整个父视图,并且仍然使用 ctrl-drag参考该父视图来设置约束。

在此处输入图像描述

0 投票
1 回答
849 浏览

ios - Xcode 6.3 故事板自动布局约束

这是我的故事板:

故事板

这是 iPad 模拟器:

iPad 模拟器

对于约束,我转到右下角并单击带有两个突出条的三角形的按钮(它看起来像一个带有三角形作为驾驶舱的星球大战战斗机)。我向下滚动到显示视图控制器中所有视图的部分,然后单击清除约束。然后我回到同一个按钮,但这次我单击添加缺少的约束。

为什么会这样?我该如何解决?

0 投票
1 回答
288 浏览

ios - 自我调整大小的单元格对我不起作用

我尝试关注 WWCD 2014 session 226,它介绍了在 iOS 8 中使用自动布局实现自动调整单元格大小的方法,但它无法正常工作。


HHTableViewCell.h



HHTableViewCell.m



MMTableViewController.h



MMTableViewController.m


单元格具有固定高度并包含两行文本。看起来像这样:

你好苹果。你好苹果。你好苹果。你好
阿普勒。你好苹果。你好苹果。你好 Apple...


约束和子视图以编程方式添加。模拟器在 Xcode 6.3.1 中运行 iOS 8.3。

0 投票
2 回答
900 浏览

ios - 在 reloadSections 后 UITableView 中仍然存在阴影:

由于我们的设计师是一个虐待狂,我有一个带有分段控件的 UITableView,它可以在单独的提要中的两种不同类型的单元格之间切换。单元格使用不同的标识符和类进行出队——这一切都很好。单元格共享一个父级,但大小不同,出于优化原因,我layer.shadowpath在父级的 layoutSubviews() 中手动设置。我需要阴影:设计师的愿望。

问题是,在我切换到第二部分之后,在桌子下方的一些地方,我认为上面的单元格有阴影悬垂。正如您从第一张图片中看到的那样,有两个阴影,如果我向下滚动以遮挡最顶部的可见单元格,阴影就会消失,这让我相信阴影是偏移的。进一步滚动会使这些阴影消失,并且在再次切换选项卡之前不会再次出现。其余的阴影都很好。

两个影子

两个影子

稍微向下滚动

一个影子不见了

当切换回上一个选项卡时,单元格较高,也存在阴影问题,但这些阴影太短了。如前所述,设置阴影路径的代码在父类中,父类负责制作和布置包含自定义 subCells 的最顶层“卡片”视图。

我以编程方式做所有事情:设置视图和自动布局。当前单元高度是硬编码的。我不确定哪些信息是相关的,因为我完全不知所措,所以这是我设置shadowPath.

为简单起见,卡片contentView采用以下视觉格式进行布局:

0 投票
1 回答
203 浏览

ios - AVCapture 不会填满整个视图

我正在尝试在视图中显示实时摄像头视频,但是当我运行以下代码时,它并没有填满整个屏幕。它仅填充 3.5 英寸屏幕尺寸(在 5.5 英寸屏幕上运行)。我已将autolayout每一侧的视图设置为 0。

当我将视图控制器的尺寸从 3.5 英寸设置为 5.5 英寸并运行时,它会填满屏幕。当autolayout大小发生变化时它正在工作,但在它运行时不起作用。

0 投票
2 回答
5073 浏览

ios - Dynamically size Table View Cells using Auto Layout constraints

Update

I have revised the question completely after my latest findings.

Goal

My goal is to implement the following effect:

  1. There is a simple table view
  2. The user selects a row
  3. The selected row expands, revealing another label below the original one

Please note that I am aware, that this can be achieved by inserting/deleting cells below the selected one, I already have a successful implementation using that method.

This time, I want to try to achieve this using Auto Layout constraints.

Current status

I have a sample project available for anyone to check, and also opened an issue. To summarize, here's what I've tried so far:

I have the following views as actors here:

  • The cell's content view
  • A top view, containing the main label ("main view")
  • A bottom view, below the main view, containing the initially hidden label ("detail view")

I have set up Auto Layout constraints within my cell the following way (please note that this is strictly pseudo-language):

  • mainView.top = contentView.top
  • mainView.leading = contentView.leading
  • mainView.trailing = contentView.trailing
  • mainView.bottom = detailView.top
  • detailView.leading = contentView.leading
  • detailView.trailing = contentView.trailing
  • detailView.bottom = contentView.bottom
  • detailView.height = 0

I have a custom UITableViewCell subclass, with multiple outlets, but the most important here is an outlet for the height constraint mentioned previously: the idea here is to set its constant to 0 by default, but when the cell is selected, set it to 44, so it becomes visible:

I have the following result:

Current status

So the effect is working, but not exactly how I originally imagined. Instead of pushing the main view up, I want the cell's height to grow when the detail view is shown, and shrink back when it's hidden.

I have examined my layout hierarchy during runtime:

  • The initial state is OK. The height of the content view is equal to the height of my main view (in this case, it's 125 points).

Screenshot initial

  • When the cell is selected, the height constraint of the detail view is increased to 44 points and the two views are properly stacked vertically.But instead of the cell's content view extending, but instead, the main view shrinks.

Screenshot detailed

Question

What I need is the following: the height of table view cell's content view should be equal to

  • the height of the main view, when the detail view's height constraint is 0 (currently this works)
  • main view height + detail view height when the detail view's height constraint is set properly (this does not work).

How do I have to set my constraints to achieve that?