1.什么是UIScrollView
移动设备的屏幕大小是有限的,当显示的内容较多的时候,无法全部展示完,可以通过手指滑动的方式查看其他的,这个就是UIScrollVieW
2.UIScrollView基本使用
(1)需要将展示的内容添加到UIScrollView中
(2)设置UIScrollView的contentSize属性,告诉UIScrollView的滚动范围
例1 OC语言
新建项目,在storyboard中不勾选autoLayout 和sizeclasses
然后拖入UIScrollView, 在UIScrollView中拖入ImageView,他们大小和控制器视图一样,铺满屏幕,为UIImageView设置图片,我找的素材
是1440*900的,设置UIImageView尺寸为1440*900;
oc代码,打开即可拖动
1 #import "ViewController.h" 2 3 @interface ViewController () 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; 5 6 @end 7 8 @implementation ViewController 9 10 - (void)viewDidLoad { 11 [super viewDidLoad]; 12 self.scrollView.contentSize = CGSizeMake(1440, 900); 13 } 14 15 @end
例2 swift纯代码版 实现效果与上述一样
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 //滑动视图 6 var scrollView = UIScrollView() 7 //UIImageView 8 var imageView = UIImageView() 9 //UIImage 10 var image = UIImage(named: "gu") 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 //UIScrollView相关 15 scrollView.frame = self.view.frame 16 scrollView.backgroundColor = UIColor.redColor() 17 scrollView.contentSize = CGSizeMake(1440, 900) 18 self.view.addSubview(scrollView) 19 //UImageView相关 20 imageView.frame = CGRectMake(0, 0, 1440, 900); 21 imageView.image = image; 22 scrollView.addSubview(imageView) 23 } 24 override func didReceiveMemoryWarning() { 25 super.didReceiveMemoryWarning() 26 } 27 28 }
注意: 如果UIScrollView无法滚动
(1)检查contenSize设置
(2)是否将属性scrollEnabled = NO
(3)没有接收到触摸事件:userInteractionEnabled = NO
(4)autolayout打开
3.UIScrollView的常见属性和方法
(1)contentofffset CGPoint 类型 UIScrollView滚动起始位置,像frame中x,y
(2)contentSize CGSize类型 滚动范围
(3)contentInset UIEdgeInsets类型 在滚动范围周围在加一层
他们之间的关系是这样的
利用上述属性做一个Demo,在例1的基础上加一个UIButton,点击的时候使得图片可以滚动
oc+storyBoard代码
1 #import "ViewController.h" 2 3 @interface ViewController () 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad { 10 [super viewDidLoad]; 11 self.scrollView.contentSize = CGSizeMake(1440, 900); 12 } 13 14 - (IBAction)move:(id)sender { 15 CGPoint old = self.scrollView.contentOffset; 16 old.x += 50; 17 old.y += 50; 18 // // 使用UIView动画 19 // [UIView animateWithDuration:3.0 animations:^{ 20 // self.scrollView.contentOffset = old; 21 // }]; 22 //或者系统方法 23 [self.scrollView setContentOffset:old animated:YES]; 24 } 25 @end
swift纯代码
1 import UIKit 2 3 class ViewController: UIViewController { 4 5 //滑动视图 6 var scrollView = UIScrollView() 7 //UIImageView 8 var imageView = UIImageView() 9 //UIImage 10 var image = UIImage(named: "gu") 11 //按钮 12 var btn = UIButton(frame: CGRectMake(100, 100, 100, 100)) 13 14 override func viewDidLoad() { 15 super.viewDidLoad() 16 //UIScrollView相关 17 scrollView.frame = self.view.frame 18 scrollView.backgroundColor = UIColor.redColor() 19 scrollView.contentSize = CGSizeMake(1440, 900) 20 self.view.addSubview(scrollView) 21 //UImageView相关 22 imageView.frame = CGRectMake(0, 0, 1440, 900); 23 imageView.image = image; 24 scrollView.addSubview(imageView) 25 //按钮相关 26 btn.setTitle("移动按钮", forState:UIControlState.Normal) 27 btn.setTitleColor(UIColor.blueColor(), forState:UIControlState.Normal) 28 self.view.addSubview(btn) 29 btn.addTarget(self, action:"move", forControlEvents:UIControlEvents.TouchUpInside) 30 } 31 32 /** 33 移动画面 34 */ 35 func move()->Void{ 36 UIView.animateWithDuration(3.0) { () -> Void in 37 var old = self.scrollView.contentOffset 38 old.x += 50 39 old.y += 50 40 self.scrollView.contentOffset = old 41 } 42 } 43 44 }
原文:http://www.cnblogs.com/gurongkang/p/4873374.html