UIWindow的妙用(二) 制作App的屏幕保护功能

在IOS的开发中,有的时候出于美观的需要会要求App制作一个屏幕保护的功能,主要就是在App运行时如果经过一段时间没有触摸屏幕,App就会播放屏幕保护的内容,当触摸屏幕的时候,屏幕保护消失,程序继续运行,

首先实现检测到受否有触摸屏幕,那么就要用到UIWindow的实例方法

- (void)sendEvent:(UIEvent *)event 来检测是否触摸屏幕

定义一个UIWindow的子类

#import <UIKit/UIKit.h>

@class MainViewController,ScreenProtectViewController;

@interface ApplicationWindow :
UIWindow

@property (nonatomic,strong)
NSTimer *idleTimer;

@property (nonatomic,strong)
MainViewController *mainVC;

@property (nonatomic,strong)
UINavigationController *naVC;

@property (nonatomic,strong)
ScreenProtectViewController *screenProtectVC;

@end

#import "ApplicationWindow.h"

#import "MainViewController.h"

#import "ScreenProtectViewController.h"

@implementation ApplicationWindow

@synthesize idleTimer,mainVC,screenProtectVC,naVC;

- (id)initWithFrame:(CGRect)frame

{

self = [super
initWithFrame:frame];

if (self) {

// Initialization code

mainVC = [MainViewController
shareInstance];

naVC = [[UINavigationController
alloc] initWithRootViewController:mainVC];

}

return
self;

}

- (void)sendEvent:(UIEvent *)event { //检测屏幕上受否有触摸操作

[super
sendEvent:event];

//
只在开始或结束触摸时 reset 闲置时间,
以减少不必须要的时钟 reset 动作

NSSet *allTouches = [event
allTouches];

if ([allTouches count] >
0) {

// allTouchescount
似乎只会是 1, 因此 anyObject
总是可用的

UITouchPhase phase =((UITouch *)[allTouches
anyObject]).phase;

if (phase ==UITouchPhaseBegan || phase ==
UITouchPhaseEnded)

[self
resetIdleTimer];

}

}

- (void)resetIdleTimer {

if (idleTimer) {

[idleTimer
invalidate];

NSLog(@"NoProtect");

self.rootViewController =naVC;  //进入到程序正仓运行的模式

}

idleTimer = [NSTimer
scheduledTimerWithTimeInterval:5
target:self
selector:@selector(idleTimerExceeded)
userInfo:nil
repeats:NO];

//这里可以设置屏幕保护出现的时间间隔

}

- (void)idleTimerExceeded {

NSLog(@"screenProtect");

screenProtectVC = [ScreenProtectViewController
shareInstance];

self.rootViewController =screenProtectVC;  //进入到屏幕保护模式

}

@end

实现这个功能主要是运用了UIwiondw的层级关系,还有就是UIwidow检测屏幕触摸的操作的方法,别的不多说了,直接上代码吧

demo下载地址

时间: 2024-08-06 13:03:30

UIWindow的妙用(二) 制作App的屏幕保护功能的相关文章

如何用Axure快速制作APP交互原型

对于产品经理来说,熟练使用一些常用软件是一项十分必要的技能.其中,作为一个专业的快速原型设计工具,Axure RP无疑在产品人心中拥有一个难以撼动的地位.但就要PS一样,虽然足够专业,但同样也会存在使用灵活性的一些问题. 今天我们就谈谈,如何用Axure快速制作APP交互原型,不对,更准确的说法应该是:如何用Axure快速制作一份有水准的APP交互原型.作为一名优秀的产品人不仅要保证效率,也要保证质量才行. 首先抛出我的方法论:制作属于自己的元件库并要学会善用母版,熟悉APP设计规范并要有自己一

制作app软件要多少钱

很多用户打电话过来开口问的第一个问题就是我想制作app软件要多少钱呢,对于金华腾云科技来说每天都会有用户重复的问制作app软件要多少钱,现在app开发已经成为一种普遍现象,就每天遇到用户问的问题“制作app软件要多少钱”,金华腾云科技的产品经理就和你一起分析一下app开发都有哪些费用: 手机app制作需求现状分析: 目前很多用户都不知道自己开发app的需求,问题都集中在我想制作app软件要多少钱?他们第一时间想了解的是价格问题,对一个app开发流程以及为什么要开发app没有概念,用户对自己要开发

程序猿教你使用免费的制作APP软件,让你降低成本!

现在这个社会中,感觉人见了面没说自己创业,没说公司估值几千万,没说自己正在制作APP都不好意思跟人聊天.满大街的创业者像是90年代满大街下海经商的总经理一样.这是创业的好时代,千万不要错过了! 生意都会做,制作APP可就不行了.一听就是非常有技术门槛的事情,况且一说APP制作动辄就要100万,这样创业者可受不了.今天,我这个程序猿告诉你,其实有免费的APP制作软件可以使用,降低成本,快速创业! 市面上有两种APP制作软件,一种是超级傻瓜式,像是做H5那样做APP.这种是我最不推荐的,质量差不说,

【转】基于laravel制作APP接口(API)

这篇文章主要介绍了基于laravel制作APP接口(API)的相关资料,需要的朋友可以参考下 前期准备 前言,为什么做以及要做个啥本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界. 这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成.但是做APP的后台就不一样了.开发了APP,想让读点数据进去,那我们就要去开发个后台了. laravel框架,是我最喜欢的PHP框

【转载】使用Axure制作App原型怎样设置尺寸?

使用Axure制作App原型怎样设置尺寸? 原文地址:http://www.axure.us/2172/ 本文由原型库网站投稿,转载请注明出处. 最近有几位小伙伴儿都提出同样一个疑问:想用Axure设计一个 APP原型 放到真实的移动设备中演示,但不知道应该使用什么尺寸?若要解释清楚像素和分辨率需要的篇幅比较长,请大家参考百度百科.这里金乌直接给大家提供一个常用的移动设备尺寸列表,制作原型时根据查询的尺寸在axure中设置大小即可,设计完毕后在生成HTML时设置 手机/移动设备 中勾选包含视图接

如何在App中实现IM功能之二快速实现离线消息模块——箭扣科技Arrownock

如何在App中实现IM功能 之二 快速实现离线消息模块 一个App在实际使用聊天功能的时候,并非是一直呆在一个界面的,在等待好友发消息来的同时,有可能已经跳转到其他界面,也有可能切换到其他App. 在当前的App进入后台.好友发来消息时,需要给设备推送一条消息.以安卓为例,收取离线消息通知需要绑定anPush,具体做法是调用anIM.bindAnPushService(anID, AppKey, anPushType). 在App进入后台时,调用anIM.disconnect():在App回到前

5、二、App Components(应用程序组件):0、概述

二.App Components(应用程序组件) 0.概述 ? App Components Android's application framework lets you create rich and innovative apps using a set of reusable components. This section explains how you can build the components that define the building blocks of your

Axure制作app侧面抽屉菜单

在之前的文章中以手机淘宝app的筛选菜单为例,给大家介绍过使用axure制作app侧面滑动菜单的方法,本文继续为大家介绍另外一种app的菜单样式--抽屉菜单.手机qq.酷狗音乐等app都采取了这种抽屉菜单的设计. 先看效果~(因为51博客的缘故,貌似效果不是很好,但能看出来抽屉的推拉效果) 效果描述: 点击左上角头像,抽屉菜单拉出,再次点击头像,抽屉菜单关闭: 向右拖动页面,抽屉菜单拉出,向左拖动页面,抽屉菜单关闭. 我们先确定基本方向: 推拉效果,左右拖动(模拟手机上的滑动手势),我们首先想到

APICloud 程序猿教你使用免费的制作APP软件!

现在这个社会中,感觉人见了面没说自己创业,没说公司估值几千万,没说自己正在制作APP都不好意思跟人聊天.满大街的创业者像是90年代满大街下海经商的总经理一样.这是创业的好时代,千万不要错过了! 生意都会做,制作APP可就不行了.一听就是非常有技术门槛的事情,况且一说APP制作动辄就要100万,这样创业者可受不了.今天,我这个程序猿告诉你,其实有免费的APP制作软件可以使用,降低成本,快速创业! 市面上有两种APP制作软件,一种是超级傻瓜式,像是做H5那样做APP.这种是我最不推荐的,质量差不说,