UI day 7 UIScrollView


                                   UIScrollView

1.UIScrollView的iOS中提供了滑块控件,用来解决当内容区域大于 UIScrollView的可视区域时,可以通过滑动的方法看整个内容区域, UIScrollView的滑动控件的基类,后期要学的UItabelView(表示图);内部实现的原理是修改视图的bounds


#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

1.创建对象
   
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(20, 20, kScreenWidth - 20*2, kScreenHeight - 20*2)];
   
2.配置属性
    scrollView.
backgroundColor = [UIColor redColor];
   
//2.1设置内容区域的大小 ################################################
    scrollView.
contentSize = CGSizeMake(280, 528);
   
//2.2修改内容区域的偏移量;x变大往左偏,y变大往上偏 #########################
    scrollView.
contentOffset = CGPointMake(0, 0);
   
//2.3是否显示滚动指示条
    scrollView.
showsHorizontalScrollIndicator =NO;
    scrollView.
showsVerticalScrollIndicator =NO;
   
//2.4修改滚动指示条的颜色
    scrollView.
indicatorStyle = UIScrollViewIndicatorStyleWhite;
   
//2.5设置scrollView能否滚动
    scrollView.
scrollEnabled = YES;
   
//2.6方向锁,设置滑动时只能朝一个方向滑动
    scrollView.
directionalLockEnabled = NO;
   
//2.7设置能否整屏滚动
    scrollView.
pagingEnabled = YES;
   
//2.8设置当滑动到屏幕边缘的时候是否出现反弹的效果
    scrollView.
bounces = YES;
   
//2.9设置当内容区域等于或者小于可视区域时,依然具有边界反弹效果
    scrollView.
alwaysBounceHorizontal = YES;
    scrollView.
alwaysBounceVertical = YES;
   
//2.10设置点击状态栏scorllView是否回到顶部,此时y轴上的偏移量为0;默认为YES
    scrollView.
scrollsToTop = YES;
   
//2.11scorollView的代理属性
   
//self指的是视图控制器对象
    scrollView.
delegate = self;
   
//2.12设置scrollView的缩放比例
    scrollView.
minimumZoomScale = 0.5;
    scrollView.
maximumZoomScale = 3.0;


//3.添加到父视图
    [
self.view addSubview:scrollView];
   
//4.释放
    [scrollView
release];
   
   
//UIImage继承NSobject
   
UIImage *image = [UIImage imageNamed:@"4.JPG"];
   
UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
    imageView.
tag = 101;
    imageView.
frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
    [scrollView
addSubview:imageView];
    [imageView
release];

#pragma mark scrollView代理方法

//1.触发时机:只要scrollView滚动,就会一直触发,会触发多次
- (
void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//    NSLog(@"滚了没!!");
   
//能够及时获得偏移量
//    NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
   
}
// any offset changes


//2.触发时机:只要进行缩放操作就会一直触发,触发多次
- (
void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2)
{
//    NSLog(@"缩放了没!!");
//    NSLog(@"%.2f",scrollView.zoomScale);
   
//存放scrollviewsize
   
CGSize sSize = scrollView.frame.size;
   
//    取出imageViewframe
   
CGRect iFrame = ((UIImageView *)[scrollView viewWithTag:101]).frame;
   
//缩放后x的坐标
   
CGFloat x= (sSize.width - scrollView.contentSize.width)/2;
   
//    缩放后y的坐标
   
CGFloat y= (sSize.height - scrollView.contentSize.height)/2;
   
//    把求出来的变化量赋值给iframe
    iFrame.
origin.x = x;
    iFrame.
origin.y = y;
    ((
UIImageView *) [scrollView viewWithTag:101]).frame = iFrame;
   
//缩小过程中contentsize就是imageView宽和高,所以只需求缩小过程中xy的坐标即可
   
}
// any zoom scale changes

// called on start of dragging (may require some time and or distance to move)

//3.触发时机:scrollview将要开始拖拽的时候触发(手指刚刚开始触摸到scrollview时候)
- (
void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
   
//    NSLog(@"开始拖拽了没!!!");
   
   
}
// called on finger up if the user dragged. velocity is in points/millisecond. targetContentOffset may be changed to adjust where the scroll view comes to rest


//4.触发时机:scrollview将要结束拖拽的时候触发
- (
void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0)
{
   
//    NSLog(@"快脱完了吗???");
   
   
   
}
// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards

//5.触发时机:scrollview已经结束拖拽了
- (
void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
//     NSLog(@"结束了吗?");
//    在此方法中拿到contenOffSet的偏移量
   
}

//6.触发时机:将要开始减速的时候触发(此方法不一定会触发)
- (
void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
{
   
//     NSLog(@"减速了吗?");
   
   
   
}
// called on finger up as we are moving
//7.触发时机:以及结束减速的时候触发(此方法不一定会触发)
- (
void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//     NSLog(@"减完速了吗");
   
//一般都在这个方法中获取scrollview的偏移量,或者设置scrollview的偏移量
//    scrollView.contentOffset = CGPointZero;
//    [scrollView setContentOffset:CGPointZero animated:YES];
   
   
}
// called when scroll view grinds to a halt

//8.触发时机:scrollview结束减速,并且带有动画效果的才会触发(必须要有动画效果哎)必须有7的配合
- (
void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
//     NSLog(@"有动画吗?");
   
   
   
}
// called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating

//9.触发时机:返回缩放后的视图,但是只能返回scrollView上的子视图
- (
UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
   
return [scrollView viewWithTag:101];
}
// return a view that will be scaled. if delegate returns nil, nothing happens

//10.触发时机:scrollview开始缩放的时候触发
- (
void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view NS_AVAILABLE_IOS(3_2)
{
//     NSLog(@"开始缩放了吗?");
   
}
// called before the scroll view begins zooming its content


//11.触发时机:结束缩放的时候触发
- (
void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{
   
    
NSLog(@"结束缩放了吗?");
   
   
   
   
   
   
}
// scale between minimum and maximum. called after any 'bounce' animations
//12.
- (
BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
   
   
   
return YES;
}
// return a yes if you want to scroll to the top. if not defined, assumes YES
//13.
- (
void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
   
   
   
   
}
// called when scrolling animation finished. may be called immediately if already at top

/*
      scrollview
的使用技巧:
     
使用scrollViewDidZoom:适时修改自身视图的大小
     
使用scrollViewDidEndDecelerating:获取contenOffSet
 

                                      UIPageControl分页控制器

UIPageControlios中提供的分页控制器,用来表示总的页数,可以通过点击pageContrl切换分页,继承UIcontrol
     */

   
//1创建对象
   
UIPageControl *aPage = [[UIPageControl alloc]initWithFrame:CGRectMake(20, 100, 280, 30)];
      
// 2.配置属性
   
//2.1设置分页个数
    aPage.
numberOfPages= 5;
   
//2.2配置当前分页点的颜色
    aPage.
currentPageIndicatorTintColor = [UIColor redColor];
//    aPage.backgroundColor = [UIColor greenColor];一般不给pageControl背景颜色
   
//2.3配置其他分页的颜色
    aPage.
pageIndicatorTintColor = [UIColor whiteColor];
   
//2.4设置pageControl的当前页
    aPage.
currentPage = 3;
   
//2.5配置关联事件#####################
    [aPage
addTarget:self action:@selector(handlePage:) forControlEvents:(UIControlEventValueChanged)];
   
   
    
//3.添加父视图上
    [
self.view addSubview:aPage];
    
//4.释放
    [aPage
release];



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值