iOS - 手动创建给定大小的 UIButton

iOS - create UIButton manually with given size

我对 UIView 的边界和框架有点困惑。我正在手动创建 UIButton,其大小与其超级视图相同:

UIButton *button = [[UIButton alloc]initWithFrame:aView.bounds]; 
button.backgroundColor = [UIColor blueColor]; 
[aView addSubview:button];

但是在模拟器中按钮和它的超级视图有不同的大小。这个我不是很懂..

(我没有使用 IB 创建按钮,因为接下来我想在该超级视图中创建一个二维按钮阵列,所以我认为手动创建它们可能更好)

您提供的代码确实有效 - 这是使子视图与其父视图大小相同的正确方法。对于您认为没有发生的原因,有两种可能的解释:

  • 您可能误解了您在模拟器中看到的内容。您在按钮后面看到的视图可能不是 aView。我要排除这种可能性并选择第二种可能性:

  • 您是 运行 在 aView 达到最终大小之前的代码。换句话说,您正在插入 button,但随后出现布局并更改 aView 的大小。 aView 大小的变化不会改变 button 的大小,因此 button 保留大小 aView used 在您创建和插入它时拥有。

您使用 aView.frame 而不是 aView.bounds 是正确的。两者都会为您提供大小(aView 的宽度和高度),但 frame 为您提供 aView 在其超级视图中的位置。该按钮将需要相对于 aView 而不是 aView 的超级视图的位置。 Bounds 会给你一个视图在它自己的坐标系中的位置(很可能是 0, 0)。

可能发生的情况是您在确定 aView 的框架之前使用 aView 的大小创建按钮。什么时候确定aView的框架? aView 是通过界面生成器创建的吗?你什么时候创建按钮?

我强烈怀疑您是在视图有机会完成其子视图布局之前将代码放入 viewDidLoad。将您的代码移至 viewDidLayoutSubviews