这个Demo是我在网站上看到的,不是本人所写,但是我觉得做框架就得从这个框架入门。
框架分析:
此Demo可以分为2部分:1⃣️,上面可以移动得ScrollView。2⃣️,下面可以移动的ScrollView。
总:上下的ScrollView都会只有被初始化一次,所以都设定为单利即可,调用起来还比较方便。
但是这里我发现了原作者写了一段新的产生单利的代码,网上搜了以下,果然是新的写法,比之前的判断好用多了,源码如下:
static TopScrollView *_singleOfTopScrollView;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_singleOfTopScrollView = [[self alloc] initWithFrame:CGRectMake(0, 0, CONTENTSIZE, 44)];
});
return _singleOfTopScrollView;
听说这个dispatch_once是专门问单利所生的,而且还是线程安全的,以后决定就用它了。
头部ScrollView详解:
头部的内容主要有2个,一个是Button,一个是可以移动的红线(imageView),ScrollView上添加Button,这个比较简单。然后就是红线移动(当移动完成时,重置被选择Button的Tag值):
[UIView animateWithDuration:0.25 animations:^{
[shadowImageView setFrame:CGRectMake((buttonSelectedTag - 100)*30,0, 59, 44)];
} completion:^(BOOL finished) {
if(finished){
buttonSelectedTag = button.tag;
}
}];
在button被点击的时候,调出RootView并移动到相对位置,这样就可以同步了。
下面ScrollView详解:
下面的话和上面正好相反。理论差不多,就是移动红线和修改被点击的Tag值。
这个框架算是相当简单,所以不提供源码,自己去找。