热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IOS用户引导界面示例

//RootViewController.m//LessonUIPageControl//Copyrigh


// RootViewController.m
// LessonUIPageControl
// Copyright (c) 2014年 Summer summer2014mht@sina.com. All rights reserved.
#import"RootViewController.h"
@interfaceRootViewController ()
@end
@implementation RootViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNilbundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
returnself;
}
- (void)viewDidLoad
{
[superviewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColoryellowColor];
//存储用户的偏好设置,存储在本地,比如:程序是否是第一次加载
NSUserDefaults *userDefaults = [NSUserDefaultsstandardUserDefaults];
if (![userDefaults boolForKey:@"aa"]) {
[selfsetupFirstLanchView];
[userDefaultssetBool:YESforKey:@"aa"];
//立即同步
[userDefaultssynchronize];
}
}
//创建程序第一次加载要显示的视图
- (void)setupFirstLanchView
{
[selfsetupScrollView];
[selfsetupPageControl];
}
- (void)setupScrollView
{
UIScrollView *scrollView = [[UIScrollViewalloc]initWithFrame:[UIScreenmainScreen].bounds];
scrollView.delegate =self;
[self.viewaddSubview:scrollView];
//关闭水平方向上的滚动条
scrollView.showsHorizOntalScrollIndicator=NO;
//是否可以整屏滑动
scrollView.pagingEnabled =YES;
scrollView.tag =200;
[scrollViewrelease];
scrollView.cOntentSize=CGSizeMake(320 *6, [UIScreen mainScreen].bounds.size.height);
for (int i = 0; i <6; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(320 * i,0,320, [UIScreenmainScreen].bounds.size.height)];
imageView.image = [UIImageimageWithContentsOfFile:[[NSBundlemainBundle]pathForResource:[NSStringstringWithFormat:@"v6_guide_%d", i +1]ofType:@"png"]];
[scrollViewaddSubview:imageView];
[imageViewrelease];
}
}
- (void)setupPageControl
{
/**
* UIPageControl
1.表示页数
2.表示当前正处于第几页
3.点击切换页数
*/
UIPageControl *pageCOntrol= [[UIPageControl alloc] initWithFrame:CGRectMake(10, [UIScreenmainScreen].bounds.size.height -40, 300, 20)];
pageControl.tag =100;
//设置表示的页数
pageControl.numberOfPages =6;
//设置选中的页数
pageControl.currentPage =0;
//设置未选中点的颜色
pageControl.pageIndicatorTintColor = [UIColorgrayColor];
//设置选中点的颜色
pageControl.currentPageIndicatorTintColor = [UIColorblackColor];
//添加响应事件
[pageControladdTarget:selfaction:@selector(handlePageControl:)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:pageControl];
[pageControlrelease];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
UIPageControl *pagCOntrol= (UIPageControl *)[self.view viewWithTag:100];
pagControl.currentPage = scrollView.contentOffset.x / 320;
}
- (void)handlePageControl:(UIPageControl *)pageControl
{
//切换pageControl .对应切换scrollView不同的界面
UIScrollView *scrollView = (UIScrollView *)[self.viewviewWithTag:200];
//
[scrollViewsetContentOffset:CGPointMake(320 * pageControl.currentPage,0)animated:YES];
}
- (void)didReceiveMemoryWarning
{
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/



推荐阅读
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 在C++程序中,文档A的每一行包含一个结构体数据,其中某些字段可能包含不同数量的数字。需要将这些结构体数据逐行读取并存储到向量中,随后不仅在控制台上显示,还要输出到新创建的文档B中。希望得到指导,感谢! ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在Java基础中,私有静态内部类是一种常见的设计模式,主要用于防止外部类的直接调用或实例化。这种内部类仅服务于其所属的外部类,确保了代码的封装性和安全性。通过分析JDK源码,我们可以发现许多常用类中都包含了私有静态内部类,这些内部类虽然功能强大,但其复杂性往往让人感到困惑。本文将深入探讨私有静态内部类的作用、实现方式及其在实际开发中的应用,帮助读者更好地理解和使用这一重要的编程技巧。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
author-avatar
lrg冰天雪地789_444
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有