- 浏览: 534984 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
第一次使用某个App时,一般会有欢迎界面,向右滑动屏幕会出现该App的新增功能或功能介绍或使用帮助相关的界面。通过PageControl可以实现该效果。
实现的功能:通过PageControl,实现多视图切换。
关键词:多视图 PageControl UIPageContrller
1、创建一个Empty Application工程,命名为:MultiView-Navigation,如下图
[img]
[/img]
2、选中工程中的Group MultiView-Tab,然后按住CMD(Windows键)+N,新建视图控制器PageControlViewController,如下图
[img]
[/img]
3、依照上步操作,新建视图控制器WelcomeViewController、FeatureListViewController
4、万事俱备,开始编写代码,首先修改AppDelegate,AppDelegate.h如下:
AppDelegate.m主要修改didFinishLaunchingWithOptions方法,如下:
5、视图控制器WelcomeViewController、FeatureListViewController仅仅修改了源代码文件,设置了一下背景色,如下:
6、主要工作在PageControlViewController中,PageControlViewController.h如下:
PageControlViewController.m如下:
UIPageControl由一系列小圆点组成,每个点代表一页,白色的点代表当前选中的页。
其实现多视图的原理是scrollView的宽度为WelcomeViewController、FeatureListViewController中View的宽度之和,并且WelcomeViewController、FeatureListViewController的View都是作为scrollView的子视图。当第一页被选中时显示WelcomeViewController的view,但是第二页被选中时显示FeatureListViewController的view。
7、编译、运行,效果如下:
实现的功能:通过PageControl,实现多视图切换。
关键词:多视图 PageControl UIPageContrller
1、创建一个Empty Application工程,命名为:MultiView-Navigation,如下图
[img]
[/img]
2、选中工程中的Group MultiView-Tab,然后按住CMD(Windows键)+N,新建视图控制器PageControlViewController,如下图
[img]
[/img]
3、依照上步操作,新建视图控制器WelcomeViewController、FeatureListViewController
4、万事俱备,开始编写代码,首先修改AppDelegate,AppDelegate.h如下:
#import <UIKit/UIKit.h> #import "PageControlViewController.h" #import "WelcomeViewController.h" @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) PageControlViewController *pageControlViewController; @end
AppDelegate.m主要修改didFinishLaunchingWithOptions方法,如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.pageControlViewController = [[PageControlViewController alloc]initWithNibName:@"PageControlViewController" bundle:nil]; //设置rootViewController self.window.rootViewController = pageControlViewController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }
5、视图控制器WelcomeViewController、FeatureListViewController仅仅修改了源代码文件,设置了一下背景色,如下:
@implementation WelcomeViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization self.view.backgroundColor = [UIColor redColor]; } return self; }
@implementation FeatureListViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization self.view.backgroundColor = [UIColor greenColor]; } return self; }
6、主要工作在PageControlViewController中,PageControlViewController.h如下:
#import <UIKit/UIKit.h> #import "WelcomeViewController.h" #import "FeatureListViewController.h" @interface PageControlViewController : UIViewController<UIScrollViewDelegate>{ BOOL pageControlUsed;//用于区分是点击PageControll换页还是通过滚动scrollView换页 } //添加代码 @property (strong, nonatomic) UIPageControl *pageControl; @property (strong, nonatomic) UIScrollView *scrollView; @property (strong, nonatomic) WelcomeViewController *welComeViewController; @property (strong, nonatomic) FeatureListViewController *featureListViewController; -(void)pageControlChanged:(id)sender; @end
PageControlViewController.m如下:
#import "PageControlViewController.h" @interface PageControlViewController () @end @implementation PageControlViewController @synthesize pageControl; @synthesize scrollView; @synthesize welComeViewController; @synthesize featureListViewController; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { } return self; } - (void)viewDidLoad { [super viewDidLoad]; CGRect frame = [UIScreen mainScreen].applicationFrame; int width = frame.size.width; int height = frame.size.height; frame = CGRectMake(0, 0, width, height); //初始化scrollView scrollView = [[UIScrollView alloc]initWithFrame:frame]; scrollView.showsVerticalScrollIndicator = NO; scrollView.showsHorizontalScrollIndicator = YES; scrollView.pagingEnabled = YES; scrollView.contentSize = CGSizeMake(width*2, height);//scrollView内存大小 scrollView.scrollsToTop = NO; //设置代理 scrollView.delegate = self; int pageControlHeight = 50; NSLog(@"width=%d,height=%d",width,height); //初始化pageControl pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(0, height-pageControlHeight, width, pageControlHeight)]; //pageControl设定 pageControl.numberOfPages = 2; //2页 pageControl.currentPage = 0; pageControl.hidesForSinglePage = NO; pageControl.backgroundColor = [UIColor blackColor]; [pageControl addTarget:self action:@selector(pageControlChanged:) forControlEvents:UIControlEventValueChanged]; //初始化welComeViewController、featureListViewController welComeViewController = [[WelcomeViewController alloc]initWithNibName:@"WelcomeViewController" bundle:nil]; featureListViewController = [[FeatureListViewController alloc]initWithNibName:@"FeatureListViewController" bundle:nil]; //设定welComeViewController的位置 frame = scrollView.frame; frame.origin.y = 0; welComeViewController.view.frame = frame; //设定featureListViewController的位置 frame.origin.x = frame.size.width; featureListViewController.view.frame = frame; //将welComeViewController、featureListViewController加入到scrollView中 [scrollView addSubview:welComeViewController.view]; [scrollView addSubview:featureListViewController.view]; //scrollView设置为黑色背景 scrollView.backgroundColor = [UIColor blackColor]; [self.view insertSubview:scrollView atIndex:0]; //将pageControl的atIndex设置为1,pageControl的view在scrollView的view的上层 [self.view insertSubview:pageControl atIndex:1]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. pageControl = nil; scrollView = nil; welComeViewController = nil; featureListViewController = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } //点击pageControl上的白色点触发的事件 -(void)pageControlChanged:(id)sender{ int page = pageControl.currentPage; NSLog(@"page=%d",page); CGRect frame = scrollView.frame; frame.origin.x = frame.size.width*page; frame.origin.y = 0; [scrollView scrollRectToVisible:frame animated:YES]; pageControlUsed = YES; //用户通过点击Page Control换页时将其设置为YES } #pragma pageControl methods - (void)scrollViewDidScroll:(UIScrollView *)sender{ NSLog(@"scrollViewDidScroll..."); if(pageControlUsed){//如果用户通过点击Page Control换页,则不做处理 return; } CGFloat pageWidth = scrollView.frame.size.width; NSLog(@"pageWidth=%.2f,scrollView.contentOffset.x=%.2f",pageWidth,scrollView.contentOffset.x); NSLog(@"@ %.2f,%2.f",floor(-0.5),floor(-0.6)); //计算滚到哪页 int page = floor((scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1; pageControl.currentPage = page; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ pageControlUsed = NO;//滚动结束后将pageControlUsed重置为NO } @end
UIPageControl由一系列小圆点组成,每个点代表一页,白色的点代表当前选中的页。
其实现多视图的原理是scrollView的宽度为WelcomeViewController、FeatureListViewController中View的宽度之和,并且WelcomeViewController、FeatureListViewController的View都是作为scrollView的子视图。当第一页被选中时显示WelcomeViewController的view,但是第二页被选中时显示FeatureListViewController的view。
7、编译、运行,效果如下:
[img]
[/img][img]
[/img]
[/img][img]
[/img]
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 860为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 1004今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 705有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1253看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1141[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 786在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 801本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 1001通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1118这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1155我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1072本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1284先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1108感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1061本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1153本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 918在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1731本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1174今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1363文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 559先看一下效果图: [img] ...
相关推荐
"iPhone开发【十一】多视图技术总结之三:Page Control"这个主题聚焦于使用UIPageControl来实现滑动浏览多个页面的效果,这在许多应用中常见,如相册、教程或者轮播广告等。UIPageControl是iOS SDK中的一个控件,它...
8. **页面指示器**(Page Control):为了提示用户当前显示的是哪个页面,轮播视图通常会配合页面指示器使用。开发者可以自定义页面指示器的样式和行为。 9. **性能优化**:对于包含大量图片的轮播视图,性能优化是...
利用ScrollView和PageControl实现翻页/页面切换效果。除了支持手机划动界面来翻页,也可以拖动pagecontrol上面的滑块了预览和切换页面。手指拖动滑块时,滑块到达哪个位置,就会显示对应位置的页面title,当手指松开...
首先,我们需要理解“翻页控件”(Page Flip Control)的概念。在iOS系统中,这种控件常用于电子书阅读器或相册应用,通过模拟真实的纸张翻页动画,让用户感受到更自然、更沉浸式的浏览体验。在安卓平台上实现这样的...
苹果ios开发100个实例源码; 个人信息输入表(支持表单增删) ...多种page control 风格 多种view视图切换效果 多种样式的圆形动态加载特效 多种样式的无背景图片的按钮效果 多种类型的图表 多种视图切换方式集锦 多
滚动视图之Page Scrubber Bar 滚动视图之Parallel View 滚动视图之SBFlowView 滚动视图之Wheel Component 汉字转换为拼音 滑竿类 滑杆(Slider)Circular Slider View 滑杆(Slider)之Range Selector 滑杆...
在iOS开发中,实现iPhone页面滑动主要涉及的是UIPageViewController和UIScrollView这两个核心组件。UIPageViewController用于创建一个可以翻页浏览多个视图控制器的容器视图,而UIScrollView则允许用户通过滑动手势...
每个子页面(Page)都是一个独立的用户控件(UserControl),包含各自的视图和逻辑。 为了实现翻页效果,我们需要利用WPF的动画系统。这通常涉及使用故事板(Storyboard)来控制元素的位置、大小和透明度。我们可以...
3. **Page Control**:UIPageControl通常用于指示多页面视图的当前页和总页数,类似于iBook底部的小圆点。在实现翻页效果时,它能帮助用户跟踪阅读进度。 4. **Gesture Recognizers**:为了实现用户触摸屏幕翻页的...
The running mechanism of Activity was used cleverly and webiews of main modules were managed through Fragment stacks, in order to control the switch among different modules. (2)Considering cross-...
在iOS开发中,"左右滑动菜单"是一种常见的交互设计,它允许用户通过左右滑动手势在多个视图之间切换,通常用于展示主菜单、设置或者其他功能选项。这种设计模式在许多应用程序中都能看到,例如社交应用、电商应用等...
这种情况下,可以使用Page Control或自定义动画来实现翻页效果,同时提供一个“跳过”选项,让用户可以选择不看完整个引导流程。 总的来说,iOS的启动页不仅是应用的第一印象,也是提升用户体验的重要环节。理解并...
在iOS开发中,轮播图(也称为无限滚动或滑动视图)是一种常见的用户界面元素,用于展示一系列图片、文字或其他内容,并自动循环播放。本示例是基于Xcode 12的一个iOS轮播图Demo,旨在帮助开发者了解如何在自己的应用...
在iOS开发中,分页控件是一种常见的UI元素,常用于展示多个视图或者内容板块,并且允许用户通过滑动屏幕在这些板块之间切换。本篇将详细介绍XXPageViewController的设计原理、实现方式以及如何在项目中集成和自定义...