问题标签 [layoutsubviews]

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 投票
2 回答
3698 浏览

iphone - 自定义 UIView 在 layoutSubviews 中导致 EXC_BAD_ACCESS 代码 = 1

我创建了一个自定义 UIView,它从 UIViewController 实例化了 3 次。从viewDidLoad那个 UIViewController 的方法:

在 RemainingTileView 类中,我有这个 layoutSubviews 方法:

创建视图时,它if (self.number)与堆栈帧一起崩溃:

self.number是 NSNumber 的一个实例。正在从主线程修改 UI。我在 stackoverflow 上寻找了现有的解决方案,但没有任何效果。

我错过了什么?我应该寻找什么?

0 投票
1 回答
3181 浏览

iphone - 具有方向和动画的自定义 UIView layoutSubviews?

我处于两难境地,使用哪种方法来设置自定义 UIViews 的框架,其中包含许多子视图,并且仍然有动画并自动调整到旋转。当我创建一个新的视图控制器时,我通常会在 loadView 或 viewDidLoad 中分配我的自定义视图,例如:

通常这个宽度和高度对于 iPhone5 屏幕是不正确的(实际的视图框架直到 viewWillAppear 才设置)但是由于 autoresizingmask 一切都可以解决。

然后在自定义 UIView DetailView 的 initWithFrame 中,我用 CGRectZero 分配所有子视图,例如:

然后我覆盖 layoutsubviews 来设置所有子视图的所有框架。这适用于任何屏幕尺寸和任何方向,例如:

但是,我刚刚发现layoutSubviews在使用动画时并不是那么好,因为当您在动画块中使用动画时,layoutsubviews在动画中间被调用并且它完全破坏了动画,例如:

我相信通过为每个动画使用标志和在 layoutsubviews 中使用这些标志来设置动画块的正确开始或结束帧有一些丑陋的解决方法,但我认为我不应该为我想要的每个动画创建一个标志做.

所以我现在的问题是:我应该如何拥有一个带有动画的自定义 UIView,它也会自动调整自身以适应旋转?

我现在能想到的唯一解决方案(我不喜欢):不要使用 layoutSubviews 而是使用自定义 UIView 的 setFrame/setBounds 方法来设置所有子视图的框架。然后在每次发生旋转时检查viewController,然后使用自定义UIView的setFrame/setBounds方法更改所有子视图的所有帧。我不喜欢这个解决方案,因为 iOS5 和 iOS6 中的旋转方法不同,我不想在每个 UIViewController 中使用它自己的自定义 UIView 来执行此操作。

有什么建议么?

0 投票
0 回答
267 浏览

ios - 自定义 UITableViewCell 和子视图位置

在我的自定义 UITableViewCell 中,我重写了方法(void)layoutSubviews,在此方法中我设置了新的子视图位置:

当我的表格第一次加载时 - 所有项目都有正确的位置,但是当我按下某个项目并按下下一个视图控制器,然后返回我的表格时 - 第二个和下一个子视图在屏幕上不可见。只有 Alpha 属性是正确的。但是 layoutSubviews 被调用。如果我尝试滚动我的 UITableView - 重绘的项目将正确显示。

我做错了什么?

谢谢!

0 投票
1 回答
19284 浏览

ios - 在哪里为子类 uitableviewcell 创建自动布局约束?

我正在尝试将自动布局用于我正在创建的 uitableviewcell 子类,我希望能提供一些关于放置布局约束创建代码的方法的建议。我一直在四处寻找,我找到的所有信息都谈到了在 viewDidLoad 方法中添加子视图后添加约束。据我所知, viewDidLoad 不是 uitableviewcell 子类的选项。

我正在使用界面生成器来创建自定义单元格并在我的代码中动态分配它。没什么特别的...我将 uitableviewcell 子类化,以便可以将自定义 uiview 添加到单元格。再一次,没有什么特别惊天动地的......当我尝试根据我添加到界面构建器中的单元格的标签来定位我的自定义 uiview 时,我遇到了困难。

这是创建自定义 uiview 并将其添加到单元格内容视图的代码:

如果我将约束代码放在 initSelf 的末尾,则不会发生任何事情。我的 _customBadge 的位置保持默认。当我将约束代码放在 layoutSubviews 中时,应用了定位;但我很确定这是错误的地方。这是代码:

谁能告诉我这段代码应该去哪里?当然,每次布局发生时我都会创建重复的约束。

谢谢

0 投票
1 回答
497 浏览

ios - 如果在自动布局中删除了子视图,则重新排列 UIView 子视图

我需要在全自动布局环境中实现拖放控制器。我已经成功实现了拖放,但问题是如果我从另一个视图中拖动一个子视图,其他相关子视图的行为会很奇怪,例如,子视图在滚动视图中水平布局是相互关联的,所以如果我删除一个subview 其他视图应该自动重新排列它们。

问候, Dhanesh。

0 投票
1 回答
40 浏览

cocoa-touch - 如何检测触摸了哪个视图?

假设我有一个按钮,每次单击它都会生成随机数量的子视图。有没有办法检测触摸的子视图?

0 投票
0 回答
301 浏览

ios - UIView 中的自动布局在哪里可以安全地询问计算的布局值?

我有这个问题。我使用集合视图作为主视图的子视图UIViewController。集合视图被固定到超级视图大小,因此它有 4 个约束,即前导、尾迹、顶部和底部,常量等于 0。单元格是子类,UICollectionViewCell由以下各项组成:

  1. 第一个标题视图
  2. 第二个标题视图
  3. UITableView

集合视图单元是从 xib 加载的,视图界面是为 4 英寸设备制作的。
第一个标题视图固定在顶部、尾端、前导位置,常量为 0,高度固定到其父视图。
第二个标题视图被限制为第一个标题视图,垂直间距等于 0,固定高度,固定轨迹,以常量 0 引导到其父视图。
表格视图被限制为第二个标题视图,垂直间距等于 0,并且固定尾迹、前导和底部,其父视图为常数 0。
在 4 英寸屏幕上一切正常,但是当我在 3.5 上加载时我遇到了一些问题,事实是我想创建UITableViewCell一个动态高度。高度应该是UITableView按行数潜水,这样它们就会出现在屏幕上。
表视图委托和数据源仅在我设置需要加载的数据并且在创建它之后发生,但在从数据源方法返回集合视图单元之前发生。
在子类的-layoutSubviews方法中,UICollectionViewCell我将 tableview 行高设置为所需的值

事实是,这里的表格视图仍然没有调整大小,因此结果 rowHeight 是错误的,该值与我在 4 英寸显示器中收到的值相同。超级视图(contentView集合视图单元格的)没问题,但表格视图的大小不正确。显示时,集合视图很好,除了表格视图的单元格大小错误。于是我开始追踪collection view cell的循环。

  1. 在 initWithFrame 方法中,集合视图单元格具有与原始 xib 相同的大小(4 英寸屏幕)
  2. 在视图控制器中,如果我在出列后立即询问集合视图单元格的大小,如果调整到正确的屏幕大小,但里面的表格视图不是
  3. 加载数据并设置委托和数据源后,collection view 可以,但是 tableview 不行
  4. -updateConstraints集合视图单元格中,表格视图大小仍然错误
  5. -layoutSubviews集合视图单元格中,表格视图大小仍然错误
  6. 表格视图的dtasource方法第一次调用返回正确的大小

我找到了使用委托方法的解决方案- (float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath,但我真的很好奇为什么其他方法不起作用,有人可以解释为什么吗?
THX
[帮助代码]

0 投票
1 回答
686 浏览

uiview - UIScrollview 重叠主视图内容

目前,我在我的应用程序中有这个功能,在那里我实现了一个高度很薄但宽度很长的 UIScrollview ......

每小时预报

如您所见,UIScrollView 与 backgroundview 重叠...不是白色背景是 UIView,我将 UIScrollView 作为 SUBVIEW 添加到其中。

问题是,当 UIScrollView 刚刚添加到子视图时,它是如何与黑色背景内容重叠的?

这是我的 UIScrollView 的 init 方法。

下面是我如何将 UIScrollView 添加到名称为 ForecastView 的 UIView(白色背景视图)中:

0 投票
2 回答
339 浏览

ios - UIScrollView 的 layoutSubviews 中的 self.decelerating 和 self.dragging

在覆盖的 layoutSubviews 调用期间,似乎 self.decelerating 和 self.dragging 不可靠。例如,它们偶尔都为真,这显然是不可能的。

是否有可靠的方法来获取 UIScrollView 是否在 layoutSubviews 中减速?

0 投票
1 回答
1055 浏览

ios - UITableView 可见单元格在视图出现时不布局子视图

我有一个UITableView包含多个部分的自定义UITableViewCell子类填充表格。在这些UITableViewCell子类中,我正在实现layoutSubviews自定义标签的位置等。

除了视图加载时的第一批可见单元格外,所有单元格的子视图都在按应有的方式进行调整。它们与它们在故事板中的布局方式相同,这不是我想要的。例如:

http://i.stack.imgur.com/L5GJh.png

注意:绿色和橙色边框是查看标签是否正在调整大小的视觉辅助。

滚动时,所有出现的新单元格都有它们的子视图,就像我编程它们的方式一样layoutSubviews。至于第一批可见单元格,我可以将它们滚动到屏幕外然后再打开,然后子视图就可以完美布局。例如:

http://i.stack.imgur.com/jgjch.png

在 内tableView: cellForRowAtIndexPath:,我[cell layoutIfNeeded]在方法返回单元格之前调用。如果我将其更改为[cell layoutSubviews],则会发生相反的情况,第一批可见单元格按应有的方式布置,但滚动时加载的所有单元格都没有正确布置。

我试图把它放进去[cell layoutIfNeeded][tableview: willDisplayCell:但没有运气。有想法该怎么解决这个吗?

提前致谢!