至少,每个视图都可以由五个子视图(顶部、左侧、底部、右侧、中间)组成。通常,当中间视图是 UIScrollView 或其子类时,我们希望顶边(或左侧、底部、右侧)视图可以像中间视图一样滚动,但如果有中间视图的内容大小小于其框架大小,我们希望侧视图可以设置为固定或不固定。
这个类就是为了满足上述要求而创建的。
@interface LZFixView : UIView
@property (strong, nonatomic) UIView *topView;
@property (strong, nonatomic) UIView *leftView;
@property (strong, nonatomic) UIView *bottomView;
@property (strong, nonatomic)UIView *rightView;
//通常中间视图是 UIScrollView 或其子类。
@property (strong, nonatomic) UIScrollView *middleView;
//默认值是 NO;当相关视图不为 nil 时,我们需要下面的布尔值来决定是否可以跟随中间视图滚动(当页面内容超出页面范围时,这四个属性可以设置四边视图是跟随内容滚动还是固定在四边)
@property (assign, nonatomic) BOOL fixTop;
@property (assign, nonatomic) BOOL fixLeft;
@property (assign, nonatomic) BOOL fixBottom;
@property (assign, nonatomic) BOOL fixRight;
//默认值是 NO;当中间视图的内容高度远小于其框架高度时,我们需要下面的两个属性来决定底部视图和右侧视图是在内容下方还是固定在底部和右侧(当页面内容很短或很窄时,这两个属性可以设置底部和右侧视图是跟随内容还是固定在最底部;当然考虑到内容是从上往下、从左往右显示,所以顶部和左侧不考虑这种情况)
@property (assign, nonatomic) BOOL fixBottomInside;
@property (assign, nonatomic) BOOL fixRightInside;
//默认值是 NO; 只当 middleView.bounces = YES;(当 middleView 的 bounces 被设为YES后,可以更改以下属性来确定四边视图是否随 middleView 一同拉伸反弹)
@property (assign, nonatomic) BOOL topBounces;
@property (assign, nonatomic) BOOL leftBounces;
@property (assign, nonatomic) BOOL bottomBounces;
@property (assign, nonatomic) BOOL rightBounces;
//在每次内容偏移或内容大小改变时调用(例如,你拖动中间视图时,在代理方法 scrollViewDidScroll: 中调用)
@param scrollView - 中间视图
- (void)adjustSideViewsLocationForView:(UIScrollView *)scrollView;
@end