2014-02-14 203 views
2

我想确保我的所有视图都没有错位,因此想要在所有uiviews上设置框架时使用CGRectIntegral。但我不想让所有的开发者都像通常那样设置框架(例如view.frame = aCGRect),并且它神奇地工作。我尝试添加一个类别,然后重写SETFRAME:方法的UIView但(很明显!)创建了一个无限循环:全局覆盖UIView setFrame

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

是否有更好的方法来做到这一点比增加了实用功能?

+0

你可以不喜欢它:' - (无效)SETFRAME:(的CGRect)框架{ super.frame = CGRectIntegral(帧) }' –

+0

@MidhunMP你不应该覆盖类别的方法。 – rmaddy

+0

@rmaddy:我以为他是继承UIView –

回答

1

如果它只是用于开发/诊断,你也许可以swizzle原来的方法(-[UIView setFrame:]),但调用您的实现原来的方法,经过调整的矩形。

+1

谢谢,但我想要一个发布解决方案,而不仅仅是一个调试解决方案。 –

+1

在发行版中全局执行此操作没有意义。 – justin