全局覆盖UIView setFrame

时间:2014-02-14 19:10:29

标签: ios objective-c uiview objective-c-category

我想确保我的所有视图都没有错位,因此在所有uiviews上设置框架时都希望使用CGRectIntegral。但是我不想这样做所有开发人员只是设置框架就像他们通常那样(例如.view.frame = aCGRect)并且它神奇地起作用。我尝试添加一个类别,然后覆盖UIView的setFrame:方法但是(显然!)创建了一个无限循环:

-(void)setFrame:(CGRect)frame{
  self.frame = CGRectIntegral(frame)
}

有没有比添加效用函数更好的方法呢?

1 个答案:

答案 0 :(得分:1)

如果仅用于开发/诊断,您可以swizzle原始方法(-[UIView setFrame:]),但可以在实现中调用原始方法,并传递调整后的矩形。