昨天主要学习了UIScrollView,UIpageControl,和NSTimer 巩固代理设计模式的一些知识, 做了一个关于大图片在一定尺寸的UIScrollView中的滚动demo,还有一个图片拉伸demo,最后结合上述所有内容,截取京东app首页的分页素材模拟做了一个自动滚动的分页demo,现在直奔主题吧
UIScrollView
UIScrollView可以理解为是一个可以滚动的View控件,它可以做页面的滚动,也可以做页面的拉伸,现在就通过例子来说明这个控件到底怎么用
/*
在Storyboard中拖一个UIScrollView控件到控制器的View中,设置好大小,位置等一些常规属性,然后在控制器的代码中创建一个它的属性
*/
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *image = [UIImage imageNamed:@"minion"];
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
[self.scrollView addSubview:imageView];
self.scrollView.contentSize = image.size;
/*
contentSize是ScrollView可以滚动的最大范围,也就是得设置了contentSize才能实现滚动的效果
*/
self.scrollView.bounces = NO;
/*
bounces是滚动时滚到页边距会实现一个弹簧效果,YES打开效果,NO关闭效果
*/
}
以上代码就实现了将一张图片完整的保存在了scrollView.contentSize中,并可以再scrollView控件中通过滚动展现想观察的部分.
注:想要关闭滚动效果可以把ScrollEnable设置为NO,也可以把UserInteraction Enable设置为NO.当然前者只是把滚动效果关闭,而后者把在ScrollView控件中的所有子控件的交互作用关闭,比如按钮无法按下
为了说明ScrollView和scrollView.contentSize的关系,请看下图
X偏移量 = scrollView.contentSize.width - scrollView.frame.size.width
Y偏移量 = scrollView.contentSize.height - scrollView.frame.size.height
下面通过一个内容滚动的demo来说明,沿用上一个demo的代码,添加以下代码
//通过4个按钮的不同tag来对他们进行滚动操作
- (IBAction)button:(UIButton *)sender {
switch (sender.tag) {
case 1:
[self.scrollView setContentOffset:CGPointMake(self.scrollView.contentOffset.x, 0) animated:YES];
/*
setContentOffset:传入一个结构体 这里是要偏移的位置 tag:1是顶端偏移,因此x保持不边,Y要偏移到0的地方
animated: 是ScrollView提供的动画方法
*/
break;
case 2:
[self.scrollView setContentOffset:CGPointMake(0, self.scrollVi