0

UIControl 有两个属性记录在案,以影响控件视图中的内容布局:

内容水平对齐

The horizontal alignment of content (text or image) within the receiver.

控制垂直对齐

The vertical alignment of content (text or image) within the receiver.

我有一个 UIControl 子类,它管理一组五个子视图;每个子视图都是一个自定义的 UIView 子类(即不是 UILabel 或 UIImageView)。

我想得到的行为是 UIControl 使用contentHorizontalAlignmentcontentVerticalAlignment属性管理我的自定义子视图的布局。

从我的实验来看,UIControl 在进行子视图布局时似乎并没有真正尊重这些属性值中的任何一个,至少当子视图不是标签或图像时。不过,我不能 100% 确定我的子类是否正确实现。

我的问题是三个问题:

  1. UIControl 是否围绕这些属性实现任何布局行为?
    • 是否仅适用于 UILabel 和 UIImageView 的子视图?
  2. 我是否必须在我的 UIControl 子类中提供子视图布局的实现?
  3. UIControl 基类中的这些属性是否主要为调用者提供用于管理内容的一致 API?

contentHorizontalAlignment鉴于和contentVerticalAlignment属性的存在,我期望 UIControl 提供某种基本级别的布局行为。

我不在基地吗?我不反对实现我自己的布局行为。如果 UIControl 已经提供了一些我应该使用的布局行为,我只是不想与框架作斗争。

谢谢,

账单

4

1 回答 1

4

只是为了跟进这个...

UIControl 只是将这些属性作为子类的一致 API 提供。基类对它们没有任何作用。

在您的 UIControl 子类中,重写该-layoutSubviews方法并使用属性来指导您的布局逻辑。

例如

switch (self.contentHorizontalAlignment) {
    case UIControlContentHorizontalAlignmentCenter:
    // layout logic for centering
    break; 
}
于 2010-07-29T00:44:20.080 回答