【问题标题】:center subview according to other subview when both have the same superview当两者具有相同的超级视图时,根据其他子视图居中子视图
【发布时间】:2015-03-06 12:56:08
【问题描述】:

如果我有 contentView 和 2 个子视图。 我想根据 subviewB 将 subviewA 居中

subviewA 和 subviewB 具有相同的父视图。

这就是我现在要在 uitableview 上方居中的 subviewA(活动指示器)。

self.subViewA.frame = CGRectMake(CGRectGetMidX(self.tableView.frame)-self.subViewA.bounds.size.width/2,
                                                                 CGRectGetMidY(self.tableView.frame)-self.subViewA.bounds.size.height/2,
                                                                 self.subViewA.bounds.size.width,
                                                                 self.subViewA.bounds.size.height);

有更清洁/更短的方法吗?任何存在的方法,我错过了:)?

我想也许有类似的东西:subviewA.frame = centerInOtherFrame(self.subviewB.frame)

【问题讨论】:

  • 约束?如果你得到框架等,你可以通过代码来完成。
  • 您的视图会有一些动态行为吗?你在使用自动布局吗?
  • 我更新了这个问题。我没有使用自动布局。只能通过 layoutSubViews 中的代码。

标签: ios objective-c


【解决方案1】:

您的方法可以简化为

self.subViewA.center = self.tableView.center;

【讨论】:

  • TableView 的中心位于其父视图的坐标中。 SubViewA 的中心应该在 TableView 的坐标中。因此,如果没有适当的坐标转换,这将无法工作。
  • @Taha "subviewA 和 subviewB 具有相同的超级视图。"
  • 是的,这是真的。但是想象一下:tableView frame=>(0,600,300,300)。所以 tableView.center 是 (150,300)。还假设 subView 的 size=>(100,100)。现在如果你将子视图的中心设置为表格视图的中心,子视图的框架将变为(100,200,100,100)。这意味着子视图不在 tableView 中居中,而是在底部。这就是我想要表达的观点。
  • @Taha 在你的例子中tableView.center 实际上是(150, 750)subview.frame(100, 700, 100, 100),它在tableView 上方居中(假设它们都在同一个容器中)
猜你喜欢
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 2015-11-29
  • 2013-04-11
相关资源
最近更新 更多