突然來的想法, 原來也很簡(jiǎn)單, 剛開始寫了一個(gè)UIView的分類, 一個(gè)繼承NSObject的類, 完全模仿Masonry的風(fēng)格啊, 睡覺前覺得不好, 腦子里大概想了一下, 應(yīng)該也可以優(yōu)化成一個(gè)分類就夠了, 早上試了一下, 果然只需要一個(gè)分類就夠了呢
用起來就是這樣的:
self.testView = [UIView new];
[self.view addSubview:self.testView];
self.testView.x(10.0f).y(0.0).w(100).h(100);
直接上代碼了
@interface UIView (LNFrame)
typedef CGRect (^LNSetNewFrameBlock)(CGRect);
- (void)setNewFrame:(LNSetNewFrameBlock)newFrame;
- (UIView *(^)(CGFloat))x;
- (UIView *(^)(CGFloat))y;
- (UIView *(^)(CGFloat))w;
- (UIView *(^)(CGFloat))h;
@end
@implementation UIView (LNFrame)
- (void)setNewFrame:(CGRect (^)(CGRect frame))newFrame
{
if (newFrame) {
self.frame = newFrame (self.frame);
}
}
- (UIView *(^)(CGFloat))x
{
return ^UIView *(CGFloat x) {
CGRect frame = self.frame;
frame.origin.x = x;
self.frame = frame;
return self;
};
}
- (UIView *(^)(CGFloat))y
{
return ^UIView *(CGFloat y) {
CGRect frame = self.frame;
frame.origin.y = y;
self.frame = frame;
return self;
};
}
- (UIView *(^)(CGFloat))w
{
return ^UIView *(CGFloat w) {
CGRect frame = self.frame;
frame.size.width = w;
self.frame = frame;
return self;
};
}
- (UIView *(^)(CGFloat))h
{
return ^UIView *(CGFloat h) {
CGRect frame = self.frame;
frame.size.height = h;
self.frame = frame;
return self;
};
}
@end
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者