首页 > 代码库 > UITableView中headerView视察滚动的简单实现
UITableView中headerView视察滚动的简单实现
简单思路:实例一个UIScrollView,在scrollView上添加两个UIView, 为scrollView添加观察者,观察scrollView的contentOffset属性.
当偏移量改变时,改变UIView视图的坐标.
示例代码:
@interface RootViewController ()@property (nonatomic, copy) UIScrollView *scrollView;@property (nonatomic, copy) UIView *headView;@property (nonatomic, copy) UIView *headView2;@end@implementation RootViewController- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view. // 创建一个UIScrollView _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 20, 300, 440)]; [self.view addSubview:_scrollView]; _scrollView.backgroundColor = [UIColor orangeColor]; _scrollView.contentSize = CGSizeMake(0, 2000); _scrollView.delegate = self; // 创建两个UIView并添加到scrollView上 _headView = [[UIView alloc] initWithFrame:CGRectMake(0, 200, 300, 50)]; [_scrollView addSubview:_headView]; _headView.backgroundColor = [UIColor grayColor]; _headView2 = [[UIView alloc] initWithFrame:CGRectMake(0, 800, 300, 40)]; [_scrollView addSubview:_headView2]; _headView2.backgroundColor = [UIColor colorWithRed:0.255 green:0.718 blue:1.000 alpha:1.000]; //为scrollView添加观察者 [_scrollView addObserver:self forKeyPath:@"contentOffset" options:(NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew) context:@"headView"]; }// 被观察者的属性发生变化就调用此方法- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if (context == @"headView") { if ((_scrollView.contentOffset.y > 200 && _scrollView.contentOffset.y <= 760)) { _headView.frame = CGRectMake(0, _scrollView.contentOffset.y, 300, 50); } if (_scrollView.contentOffset.y >= 760 && _scrollView.contentOffset.y <= 800.0) { float y = 760; _headView.frame = CGRectMake(0, y, 300, 50); } if (_scrollView.contentOffset.y >= 800) { _headView2.frame = CGRectMake(0, _scrollView.contentOffset.y, 300, 40); } } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }}@end
基本实现了效果,如果有什么错误或者更好的想法,欢迎指正.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。