feat:step7

This commit is contained in:
pengfei.zhou 2019-11-27 17:33:47 +08:00
parent e3cb635358
commit efd71a69cb
3 changed files with 21 additions and 8 deletions

View File

@ -5,7 +5,6 @@
#import "DoricSwipeRefreshLayout.h" #import "DoricSwipeRefreshLayout.h"
#import "UIView+Doric.h" #import "UIView+Doric.h"
#import "DoricLayouts.h" #import "DoricLayouts.h"
#import "Doric.h"
@interface DoricSwipeRefreshLayout () <UIScrollViewDelegate> @interface DoricSwipeRefreshLayout () <UIScrollViewDelegate>
@ -40,9 +39,18 @@ - (CGSize)sizeThatFits:(CGSize)size {
return CGSizeZero; return CGSizeZero;
} }
- (BOOL)requestFromSubview:(UIView *)subview {
if (subview == self.headerView) {
return NO;
}
return [super requestFromSubview:subview];
}
- (void)layoutSelf:(CGSize)targetSize { - (void)layoutSelf:(CGSize)targetSize {
[super layoutSelf:targetSize]; [super layoutSelf:targetSize];
[self.contentView layoutSelf:targetSize]; self.headerView.bottom = 0;
self.headerView.centerX = self.centerX;
self.contentSize = self.frame.size;
} }
- (void)setContentView:(UIView *)contentView { - (void)setContentView:(UIView *)contentView {

View File

@ -94,4 +94,6 @@ typedef NS_ENUM(NSInteger, DoricGravity) {
- (CGSize)measureSize:(CGSize)targetSize; - (CGSize)measureSize:(CGSize)targetSize;
- (void)doricLayoutSubviews; - (void)doricLayoutSubviews;
- (BOOL)requestFromSubview:(UIView *)subview;
@end @end

View File

@ -101,20 +101,23 @@ - (void)layoutSelf:(CGSize)targetSize {
} }
} }
- (BOOL)requestSuperview {
return self.layoutConfig
&& self.layoutConfig.widthSpec != DoricLayoutExact
&& self.layoutConfig.heightSpec != DoricLayoutExact;
}
- (void)doricLayoutSubviews { - (void)doricLayoutSubviews {
if ([self requestSuperview]) { if ([self.superview requestFromSubview:self]) {
[self.superview doricLayoutSubviews]; [self.superview doricLayoutSubviews];
} else { } else {
[self layoutSelf:CGSizeMake(self.width, self.height)]; [self layoutSelf:CGSizeMake(self.width, self.height)];
} }
} }
- (BOOL)requestFromSubview:(UIView *)subview {
if (self.layoutConfig
&& self.layoutConfig.widthSpec != DoricLayoutExact
&& self.layoutConfig.heightSpec != DoricLayoutExact) {
return YES;
}
return NO;
}
@end @end
DoricMargin DoricMarginMake(CGFloat left, CGFloat top, CGFloat right, CGFloat bottom) { DoricMargin DoricMarginMake(CGFloat left, CGFloat top, CGFloat right, CGFloat bottom) {