【问题标题】:UIControl -contentHorizontalAlignment: how to use in a subclassUIControl -contentHorizo​​ntalAlignment:如何在子类中使用
【发布时间】:2011-03-21 05:52:45
【问题描述】:

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?

鉴于contentHorizontalAlignmentcontentVerticalAlignment 属性的存在,我希望UIControl 能够提供某种基本级别的布局行为。

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

谢谢,

比尔

【问题讨论】:

    标签: iphone subclass uicontrol


    【解决方案1】:

    只是为了跟进这个......

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

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

    例如

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

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      相关资源
      最近更新 更多