代码之家  ›  专栏  ›  技术社区  ›  Steven Fisher

UIView子类默认属性

  •  2
  • Steven Fisher  · 技术社区  · 16 年前

    2 回复  |  直到 16 年前
        1
  •  6
  •   cduhn    16 年前

    在你的子类中实现initWithFrame:并在那里设置属性。

    - (id)initWithFrame:(CGRect)aRect {
        if (self = [super initWithFrame:aRect]) {
            // Set whatever properties you want.  For example...
            self.alpha = 0.75;
        }
        return self;
    }
    

    此指定的初始化器仅在视图以代码构造时执行。如果视图来自nib文件,它将使用initWithCoder:进行初始化,该程序会修改属性以匹配nib文件中的属性。要处理这种情况,您可以重写initWithCoder:,测试该属性是否设置为默认值,如果是,请更改它:

    - (id)initWithCoder:(NSCoder *)decoder {
        if (self = [super initWithCoder:decoder]) {
            if (self.alpha == 1.0) {
                self.alpha = 0.20;
            }
        }
        return self;
    }
    
        2
  •  1
  •   mahboudz    16 年前

    如果这是您自己的自定义属性,那么XIB应该将其设置为零。

    因此,正如@cduhn所说,您可以在以下位置对其进行修改:

    - (id)initWithCoder:(NSCoder *)decoder {
        if (self = [super initWithCoder:decoder]) {
            lineWidth = 12; // whatever value you want
        }
        return self;
    }
    
    推荐文章