@interface ViewController : UIViewController<UIScrollViewDelegate>

{

UIScrollView * scrollView;

UIPageControl * pageControl;

//    BOOL pageControlIsChangingPage;

NSMutableArray * images;

}

//- (void)changePage:(id)sender;

- (void)setupPage;

@end

 
 
 
 

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

self.view.backgroundColor = [UIColor blackColor];

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];

pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 410, 320, 36)];

images = [NSMutableArray arrayWithObjects:@"h1.jpeg",@"h2.jpeg",@"h3.jpeg",@"h4.jpeg",@"h5.jpeg",@"h6.jpeg",@"h7.jpeg",@"h8.jpeg", nil];

[self.view addSubview:scrollView];

[self.view addSubview:pageControl];

[self setupPage];

}

////多余的方法

//- (void)changePage:(id)sender

//{

//

//    NSLog(@"%s",__func__);

//    CGRect frame = scrollView.frame;

//

//    frame.origin.x = frame.size.width * pageControl.currentPage;

//    frame.origin.y = 0;

//

//    [scrollView scrollRectToVisible:frame animated:YES];

//

//    pageControlIsChangingPage = YES;

//

//}

- (void)setupPage

{

NSLog(@"%s",__func__);

scrollView.delegate = self;

[scrollView setBackgroundColor: [UIColor blackColor]];

//

[scrollView setCanCancelContentTouches:NO];

scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite ;

//    //

//    scrollView.clipsToBounds  = YES;

//

//    scrollView.scrollEnabled = YES;

scrollView.pagingEnabled = YES;

//    //

//    scrollView.directionalLockEnabled = YES;

//

//隐藏滚动条

scrollView.alwaysBounceVertical = NO;

scrollView.alwaysBounceHorizontal = NO;

scrollView.showsHorizontalScrollIndicator = NO;

scrollView.showsVerticalScrollIndicator = NO;

NSInteger nimages = 0;

CGFloat cx = 0 ;//定义下一幅图片的的坐标

//循环导入图片

for(NSString * imagePath in images)

{

//        UIImageView * imageView = [[[UIImageView alloc] initWithFrame:CGRectZero]autorelease];

//

//        [imageView setBackgroundColor: [UIColor colorWithRed:.6 green:.6 blue:.6 alpha:1.0]];

//

//        UIImage * image = [UIImage imageNamed:imagePath];

//

//        [imageView setImage:image];

UIImageView * imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imagePath]];

CGRect rect = scrollView.frame;

rect.size.height = scrollView.frame.size.height;

rect.size.width = scrollView.frame.size.width;

rect.origin.x = cx;

rect.origin.y = 0;

imageView.frame = rect;

imageView.contentMode = UIViewContentModeScaleAspectFill;

[scrollView addSubview:imageView];

cx += scrollView.frame.size.width;

nimages ++;

}

//    //不必要的事件

//    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];

pageControl.currentPage = 0;

pageControl.numberOfPages = nimages;

pageControl.tag = 0;

[scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)];

}

//scrollViewkai

- (void)scrollViewDidScroll:(UIScrollView *)_scrollView

{

NSLog(@"%s",__func__);

//    if(pageControlIsChangingPage)

//    {

//        return;

//    }

//画面拖动超过百分之五十进行切换

//返回page的值

CGFloat pageWidth = _scrollView.frame.size.width;

//函数名: floor  功 能: 返回小于或者等于指定表达式的最大整数

//函数名: ceil  功 能: 返回大于或者等于指定表达式的最小整数

int page = floor((_scrollView.contentOffset.x - pageWidth/2)/pageWidth)+1;

pageControl.currentPage = page;

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

NSLog(@"%s",__func__);

//    pageControlIsChangingPage = NO;

}

- (void)dealloc

{

[images release];

[scrollView release];

[pageControl release];

[super dealloc];

}

UIScrollView 与 UIPageView 的联合使用的更多相关文章

  1. Dynamics CRM 之ADFS 使用 WID 的独立联合服务器

    ADFS 的使用 WID 的独立联合服务器适用于自己的测试环境,常用的就是在虚机中使用. 拓扑图如下: wID:联合身份验证服务配置为使用 Windows 内部数据库

  2. Dynamics CRM 之ADFS 使用 WID 的联合服务器场

    使用 WID 的联合服务器场 默认拓扑 Active Directory 联合身份验证服务 (AD FS) 是联合服务器场,使用 Windows 内部数据库 (WID). 在这种拓扑, AD FS 使 ...

  3. 【原】Masonry+UIScrollView的使用注意事项

    [原]Masonry+UIScrollView的使用注意事项 本文转载请注明出处 —— polobymulberry-博客园 1.问题描述 我想实现的使用在一个UIScrollView依次添加三个UI ...

  4. Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A ...

  5. Federated Identity Pattern 联合身份模式

    Delegate authentication to an external identity provider. This pattern can simplify development, min ...

  6. [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合

    [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合 Datasets can often contain components of that require differe ...

  7. SQL联合查询:子表任一记录与主表联合查询

    今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as ...

  8. Dynamics CRM 之ADFS 使用 SQL Server 的联合服务器场

    此拓扑用于 Active Directory 联合身份验证服务 (AD FS) 不同于使用 Windows 内部数据库 (WID) 部署拓扑,因为不会将数据复制到每台联合服务器场中的联合身份验证服务器 ...

  9. Dynamics CRM 之ADFS 使用 WID 和代理的联合服务器场

    为此部署拓扑 Active Directory 联合身份验证服务 (AD FS) 等同于联合服务器场与 Windows 内部数据库 (WID) 拓扑中,但它将代理服务器计算机添加到外围网络,以支持外部 ...

随机推荐

  1. [Oracle] Data Guard 系列(5) - 创建逻辑备库

    在创建逻辑备库之前,必须得先创建物理备库,关于如何创建物理备库,请参考<Data Guard 系列(4) - 在不停主库的情况下创建物理备库>. 1. 在物理备库上停止日志应用服务 SYS ...

  2. hdu 5626 Clarke and points

    Problem Description Clarke is a patient with multiple personality disorder. One day he turned into a ...

  3. Unity 代码规范(PlateFace)1.0版本

    PlateFace Unity开发规范(1.0) 1.项目都采用英文名命名,图片,音频,资源都不能采用中文. 2.方法名: 帕斯卡命名(所有单词首字母大写) 3.字段: 在Unity中组件字段名第一个 ...

  4. 一些常用运行命令和CMD命令

    运行命令 1. 进入服务页面的命令: services.msc 2. 远程连接命令:mstsc.exe 3. 配置电脑启动项 msconfig 4. 计算器 calc.exe 5. 设定关机时间(se ...

  5. JSP中的include的两种用法

    1.两种用法 <%@ include file=” ”%> <jsp:include page=” ” flush=”true”/> 2.用法区别 (1)执行时间上区别 < ...

  6. 【设计模式:单例模式】使用单例模式载入properties文件

    先准备測试程序: package org.jediael.util; import static org.junit.Assert.*; import org.junit.Test; public c ...

  7. 使用一个HttpModule拦截Http请求,来检测页面刷新(F5或正常的请求)

    在Web Application中,有个问题就是:“我怎么来判断一个http请求到底是通过按F5刷新的请求还是正常的提交请求?” 相信了解ASP.NET的人知道我在说什么,会有同感,而且这其实不是一个 ...

  8. 为什么JavaScript函数中的参数前面不能加var

    首先这里是JavaScript的语法规则. 其次在调用function()函数的时候参数时外部传入的.在传入之前就已经被声明了.没必要在函数参数里声明. 如果想要在函数里用新的参数 function( ...

  9. oracle使用还原段的目的和还原数据的管理方法及还原段的类型

    一.引入还原段主要有3个目的: 1.事务回滚:主要是针对rollback语句起作用 2.事务恢复:非正常关闭数据库即非保留事务级关闭数据库(abort.immediate)或者数据库instance崩 ...

  10. PHP header() http各种状态码大全查询

    PHP header()the function declaration: void header ( string string [, bool replace [, int http_respon ...