2010-07-26 36 views
0

UIControl具有被记录,以影响该控件的视图内容的布局两个属性:UIControl -contentHorizo​​ntalAlignment:如何在子类中使用

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. 

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

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

从我的实验来看,UIControl在进行子视图布局时实际上并不尊重这些属性值,至少当子视图不是标签或图像时。不过,我并不是100%确定我的子类是正确实现的。

我的问题是三十岁上下:

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

我期待UIControl提供某种给定的contentHorizontalAlignmentcontentVerticalAlignment性质存在基础级别的布局行为。

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

感谢,

回答

4

比尔就跟进这个...

UIControl只是提供了这些特性,作为子类的一个一致的API。基类不会对它们做任何事情。

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

例如

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