时间:2010-07-26 18:18:15

标签: iphone subclass uicontrol

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

contentHorizo​​ntalAlignment

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

controlVerticalAlignment

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来管理内容?
  4. 由于存在contentHorizontalAlignmentcontentVerticalAlignment属性,我期待UIControl提供某种基本级别的布局行为。

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

    谢谢,

    比尔

1 个答案:

答案 0 :(得分:4)

只是为了跟进......

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

在UIControl子类中,覆盖-layoutSubviews方法并使用属性来指导布局逻辑。

e.g。

switch (self.contentHorizontalAlignment) {
    case UIControlContentHorizontalAlignmentCenter:
    // layout logic for centering
    break; 
}