标签: iphone

ios(杂)代码集锦

在iphone程序中实现截屏的一种方法:

//导入头文件
#import QuartzCore/QuartzCore.h

//创建一个基于位图的图形上下文并指定大小为CGSizeMake(200,400)
UIGraphicsBeginImageContext(CGSizeMake(200,400));

//renderInContext 呈现接受者及其子范围到指定的上下文
[self.view.layer  renderInContext:UIGraphicsGetCurrentContext()];

//返回一个基于当前图形上下文的图片
UIImage *aImage =UIGraphicsGetImageFromCurrentImageContext();

//移除栈顶的基于当前位图的图形上下文
UIGraphicsEndImageContext();

//以png格式返回指定图片的数据
imageData = UIImagePNGRepresentation(aImage);

//或者将该图片保存到图片集中
UIImageWriteToSavedPhotosAlbum(image,self,nil,nil);

Objective-C 画图

1.颜色和字体
UIKit提供了UIColor和UIFont类来进行设置颜色和字体,
UIColor *redColor=【UIColor redColor】;
【redColor set】;//设置为红色
UIFont *front=【UIFont systemFontOfSize:14.0】;//获得系统字体
【myLable setFont:font】;//设置文本对象的字体
2.drawRect方法
对于画图,你首先需要重载drawRect方法,然后调用setNeedsDisplay方法让系统画图:
-(void)drawRect:(CGRect)rect;//在rect指定的区域画图
-(void)setNeedsDisplay;//让系统调用drawRect画图

延时函数和Timer的使用
延时函数:

[NSThread sleepForTimeInterval:5.0]; //暂停5s.

Timer的使用:
NSTimer *connectionTimer;  //timer对象

//实例化timer
self.connectionTimer=[NSTimer  scheduledTimerWithTimeInterval:1.5 target:selfselector:@selector(timerFired:) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop]addTimer:self.connectionTimer forMode:NSDefaultRunLoopMode];

//用timer作为延时的一种方法
do{
[[NSRunLoop  currentRunLoop]runUntilDate:[NSDate  dateWithTimeIntervalSinceNow:1.0]];
}while(!done);

//timer调用函数
-(void)timerFired:(NSTimer *)timer{
done =YES;
}

启动界面的制作
iPhone开发实现splash画面非常简单,做一个全屏的欢迎页的图片,把它命名为Default.png,然后放在Xcode工程的Resource里面。
在XXXAppDelegate.m程序中,插入如下代码:
– (BOOL)application:(UIApplication*)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//–inserta delay of 5 seconds before the splash screendisappears–
[NSThread sleepForTimeInterval:5.0];
//Override point for customization after applicationlaunch.
//Add the view controller’s view to the window anddisplay.
[window  addSubview:viewController.view];
[window  makeKeyAndVisible];
return YES;
}
这样splash页面就停留5秒后,消失了。

关于控制器Controller的思考
iPhone开发中,只有一个窗口,对应的是多个视图,而视图的组织形式各种各样,关键是要靠控制器来组织各个视图的逻辑关系。大体的关系如下:

窗体—主控制器(比如说导航控制器),主控制器在窗体里面,拖动过去即可,在AppDelegate中写相关变量的代码—在主控制器下有别的控制器,比如视图控制器,可以通过interfacebuilder来关联根视图什么的—-视图控制器相当于一个根视图,可以调用其他的视图—视图中包含类文件(.h,.m)和图形界面文件(.xib)(两个之间必须关联起来。)

翻页效果
经常看到iPhone的软件向上向下翻页面的效果,其实这个很简单,已经有封装好的相关方法处理。
//首先设置动画的相关参数
[UIView beginAnimations:@”Curl”context:nil];
[UIView setAnimationDuration:1.25]; //时间
[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];//速度

//然后设置动画的动作和目标视图
[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];

参数UIViewAnimationTransitionCurlUp代表向上翻页,如果向下的话UIViewAnimationTransitionCurlDown.
forView那把当前的视图传进去。
//*后提交动画
[UIView commitAnimations];

自定义按钮
UIButton *Btn;
CGRect frame;
Btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; //按钮的类型    
[Btn setImage:[UIImage imageNamed:@“aaa.png”] forState:UIControlStateNormal];//设置按钮图片
Btn.tag = 10;
frame.size.width = 59;  //设置按钮的宽度
frame.size.height = 59;   //设置按钮的高度
frame.origin.x =150;   //设置按钮的位置
frame.origin.y =260;
[Btn setFrame:frame];
[Btn setBackgroundColor:[UIColor clearColor]];
  [Btn addTarget:self action:@selector(btnPressed:)forControlEvents:UIControlEventTouchUpInside];   //按钮的单击事件    
[self.view addSubview:Btn];
[Btn release];
-(void)btnPressed:(id)sender {
//在这里实现按钮的单击事件
}

使用NSTimer与iphone的简单动画,实现飘雪效果
使用NSTimer与iphone的简单动画,实现飘雪效果,这理原理比较简单,就是定时生成一定的雪花图片,然后使用动画的方式向下漂落(我在其它论坛,看到使用path的方式实现的一个云漂来漂去的效果,实际也可以用那种方式实现,这实际就是前面说的动画效果的两种应用)。所以,我们可以在 viewDidLoad事件中,增加一个图片及定时器并启动,这里的pic请在头文件中定义。
-(void)viewDidLoad{
[super viewDidLoad];
self.pic = [UIImage imageNamed:@”snow.png”];//初始化图片
//启动定时器,实现飘雪效果
[NSTimer scheduledTimerWithTimeInterval:(0.2) target:self selector:@selector(ontime) userInfo:nil repeats:YES];
}
然后再实现定时器定时调用的ontime方法:
-(void)ontime{
UIImageView *view = [[UIImageView alloc] initWithImage:pic];//声明一个UIImageView对象,用来添加图片
view.alpha = 0.5;//设置该view的alpha为0.5,半透明的
int x = round(random()%320);//随机得到该图片的x坐标
int y = round(random()%320);//这个是该图片移动的*后坐标x轴的
int s = round(random()%15)+10;//这个是定义雪花图片的大小
int sp = 1/round(random()%100)+1;//这个是速度
view.frame = CGRectMake(x, -50, s, s);//雪花开始的大小和位置
[self.view addSubview:view];//添加该view
[UIView beginAnimations:nil context:view];//开始动画
[UIView setAnimationDuration:10*sp];//设定速度
view.frame = CGRectMake(y, 500, s, s);//设定该雪花*后的消失坐标
[UIView setAnimationDelegate:self];
[UIView commitAnimations];
}
 
 
使用NSTimer实现倒计时
今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的IphoneSDK升级到3.1了,以前使用的是2.2.1,在2.2.1里面是可以使用NSCalendarDate的,但是在3.1里面不能够使用,怎么办,只好用NSTimer了,*后还是给实现了。代码也比较简单,开始运行viewDidLoad的时候加载 [NSTimerscheduledTimerWithTimeInterval:1.0 target:selfselector:@selector(timerFireMethod:) userInfo:nilrepeats:YES];//使用timer定时,每秒触发一次
,然后就是写selector了。

-(void)timerFireMethod:(NSTimer*)theTimer
{
//NSDateFormatter *dateformatter =[[[NSDateFormatter alloc]init]autorelease];//定义NSDateFormatter用来显示格式
//[dateformatter setDateFormat:@”yyyy MM dd hh mmss”];//设定格式
NSCalendar *cal = [NSCalendar   currentCalendar];//定义一个NSCalendar对象
NSDateComponents *shibo = [[NSDateComponents  alloc] init];//初始化目标时间(好像是世博会的日期)
[shibo setYear:2010];
[shibo setMonth:5];
[shibo setDay:1];
[shibo setHour:8];
[shibo setMinute:0];
[shibo setSecond:0];

%title插图%num

 NSDate *todate = [cal   dateFromComponents:shibo];//把目标时间装载入date
[shibo release];
// NSString *ssss = [dateformatter   stringFromDate:dd];
// NSLog([NSString stringWithFormat:@”shiboshi:%@”,ssss]);

NSDate *today = [NSDate date];//得到当前时间
// NSString *sss = [dateformatter  stringFromDate:today];
// NSLog([NSString stringWithFormat:@”xianzaishi:%@”,sss]);
//用来得到具体的时差
unsigned int unitFlags = NSYearCalendarUnit |NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit |NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *d = [cal components:unitFlags   fromDate:today toDate:todate options:0];
lab.text = [NSStringstringWithFormat:@”%d年%d月%d日%d时%d分%d秒”,[d year],[d month], [d day],[d hour], [d minute], [d second]];
}
这样就实现了倒计时的功能。

Iphone幻灯片效果+背景音乐
今天弄了几张好看的图片,我就摸索着实现了图片的幻灯片效果,这个以前也实现过了,也算是温故知新吧,另外就是使用SoundEngine类实现背景音乐的播放。SoundEngine类可以从[url=read.php?tid-1215.html]http://www.cocoachina.com/bbs/read.php?tid-1215.html[/url]下载到。

代码很简单贴出来,以备不时只需:
-(void)viewDidLoad
{
array = [[NSMutableArray alloc] init];
int i = 1;
for(i;i<=30;i++)
{
[array addObject:[UIImageimageNamed:[NSString stringWithFormat:@”%d.jpg”,i]]];
}
pictures.animationImages = array;
pictures.animationDuration = 300;//时间间隔
pictures.animationRepeatCount = 0;//循环播放
[pictures startAnimating];//开始播放

//播放背景音乐,利用SoundEngine类进行播放
SoundEngine_SetListenerPosition(0.0, 0.0,1.0);
SoundEngine_Initialize(44100);
SoundEngine_LoadBackgroundMusicTrack([[[NSBundlemainBundle] pathForResource:@”win” ofType:@”caf”] UTF8String],true, true);
SoundEngine_StartBackgroundMusic();
}
用这种方法播放好像挺占用资源的,比较卡,以后再研究研究其它的方法。

%title插图%num

NSTimer的用法

iPhone为我们提供了一个很强大得时间定时器 NSTimer,它可以完成任何定时功能:
我们使用起来也很简单,只要记住三要素就可以,具体得三要素是:时间间隔NSTimeInterval浮点型,事件代理delegate和事件处理方法@selector();
就可以用
1 +(NSTimer *)scheduledTimerWithTimeIn
2 terval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
[/pre]来初始化一个 时间定时器
下面我写了一个很简单得例子:
-(void)initTimer
{
//时间间隔4 NSTimeInterval timeInterval =1.0;
//定时器6 NSTimer   showTimer =[NSTimer scheduledTimerWithTimeInterval:maxShowTime
target:self
selector:@selector(handleMaxShowTimer:)
userInfo:nil
repeats:NO];
}
//触发事件13 -(void)handleMaxShowTimer:(NSTimer *)theTimer
{
NSDateFormatter dateFormator =[[NSDateFormatter alloc] init];
dateFormator.dateFormat =@”yyyy-MM-dd  HH:mm:ss”;
NSString *date =[dateformater stringFromDate:[NSDate date]];
if([date isEqualToString:@”2010-11-09 23:59:59″])
{
UIAlertView *alert =[[UIAlertView alloc] initWithTitle:TITLE_NAME
message:@”现在马上就有新的一天了!”22 delegate:self
cancelButtonTitle:nil
otherButtonTitles:CONFIRM_TITLE, nil];
[alert show];
[alert release];
}
[data release];
[dateFormator release];
}

 
 
iphone开发之 - 启动页面设置
       不管是开发个人项目还是公司项目,大家通常都有一个需求,就是,在app启动的时候,指定一定的时间来显示自己的或者公司的logo,那么,我就将刚刚写好的启动加载页面设置代码贡献出来。(不对指出请留言,好的话也给我留个言吧,鼓励下我!呵呵)
这里我需要用到NSTimer这个东西,相关的内容可以查看API,有比较详细的解释。
新建一个项目,随便是什么项目,我建立的是“view based application”,然后,命名为“Logo”,然后确定。
直接编辑“Resources”目录下的”LogoViewController.xib”。将背景颜色改称绿色,主要是为了当从logo页跳转过来的时候能有感觉到变化。
然后新建一个NSTimer.

logoviewcon*lo = [[logoviewcon  alloc] initWithNibName:@”logoviewcon”bundle:nil];
self.logo = lo;
[lo release];
[window   addSubview:self.logo.view];
//初始化timmer
NSTimer*timer =  [NSTimer   scheduledTimerWithTimeInterval: 1.5target: selfselector: @selector(logo:) userInfo: nil   repeats: YES];
注意,初始化的代码有这么一段:@selector(logo:),其的方法就是当这个1.5秒时间过去之后自动调用的方法

-(void) logo:(NSTimer*)timer{
[logo.view removeFromSuperview];
[timer invalidate];//这句代码用来终止timmer,否则,每过1.5秒,就会执行该方法一次,我们是要在开始的时候执行一次就够了。
}

iphone 学习笔记

1。隐藏状态栏[[UIApplication sharedApplication] setStatusBarHidden:YES];

/******************************************************************************
1、取随机数:
NSData *datanow = [NSData data];
int i = (int)datanow;
srandom(i);
rand();
//int effectPicNum = random()%7;
******************************************************************************/
/******************************************************************************
2、播放音乐:
-(void) playMusic
{
@try{
//取文件路径
NSString *musicFilePath = [[NSBundle mainBundle] pathForResource:@”startLogo” ofType:@”mp3″];
NSURL *musicURL = [[NSURL alloc] initFileURLWithPath:musicFilePath];
musicPlayer= [[AVAudioPlayer   alloc] initWithContentsOfURL: musicURL   error:nil];
[musicURL   release];
//[musicPlayer  prepareToPlay];
//[musicPlayer  setVolume:1];            //设置音量大小
musicPlayer.numberOfLoops= 0; //设置播放次数,-1为一直循环,0为一次
[musicPlayerplay];
}
@catch(NSException* e) {
}
}
******************************************************************************/
/******************************************************************************
3、每隔0.8秒执行timeCount方法:
NSTimer*countTimer;
countTimer= [NSTimer    scheduledTimerWithTimeInterval: 0.8target: selfselector: @selector(timeCount:)  userInfo: nilrepeats: YES];
[countTimer  fire];     //执行timer
******************************************************************************/
/******************************************************************************
4、延迟1秒执行test方法:
[self   performSelector:@selector(test) withObject:nil  afterDelay:0.1];
******************************************************************************/
/******************************************************************************
5、启动线程:
[NSThread    detachNewThreadSelector:@selector(transImage)  toTarget:self    withObject:nil];
timer=[NSTimer    scheduledTimerWithTimeInterval:0.03   target:self   selector:@selector(TimerClock:) userInfo:nil  repeats:YES]; //启动一个NSTimer执行广播
[timerfire];  //执行timer

-(void)TimerClock:(id)sender
{
//控制延迟触发
if(Timecontrol>1) {
[timerCondition  broadcast];      //广播,触发处于等待状态的timerCondition
}
}

-(void)transImage
{
isRunning=YES;
while (countTime < COUNTTIME) {
[timerCondition  wait];
lim += 255 / (2 * KFrame);
[self  processImage];
countTime += 1000 / KFrame;
}
[timerinvalidate];
isRunning=NO;
}
******************************************************************************/
/******************************************************************************
6、获取文件路径:
//通过NSHomeDirectory获得文件路径
NSString *homeDirectory = NSHomeDirectory();
NSString *fileDirectory = [homeDirectory stringByAppendingPathComponent:@”temp/app_data.plist”];

//使用NSSearchPathForDirectoriesInDomains检索指定路径
NSArray*path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//常量NSDocumentDirectory表示正在查找Documents目录的路径(使用NSCachesDirectory表明要查找的时Caches文件夹),常量NSUserDomainMask表明我们希望将搜索限制于我们应用程序的沙盒,*后一个参数决定了是否“展开”波浪线符号。
//在Mac系统中,‘~’表示主路经(Home),如果不展开,路径看起来就是:‘~/Documents’,展开后即得到完整路径。这个参数一直设置位真即可。
NSString *documentsDirectory = [paths objectAtIndex:0];z
NSString *fileDirectory = [documentsDirectory stringByAppendingPathComponent:@”file.txt”];

//使用Foundation中的NSTemporaryDirectory函数直接返回代表temp文件夹的全路径的字符串对象
NSString *tempDirectory = NSTemporaryDirectory();
NSString*file = [tempDirectory stringByAppendingPathComponent:@”file.txt”];

Example:
NSArray*path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *docDir = [path objectAtIndex:0];
NSLog(@”filepath:%@”,docDir);
NSString*str = @”hello.jpg”;
NSString*filepath = [docDir stringByAppendingPathComponent:str];
//NSString *filepath = [docDir stringByAppendingPathComponent:[NSString stringWithUTF8String:”///mest.txt”]];
NSLog(@”filepath:%@”,filepath);
BOOLsuccess = [[NSFileManagerdefaultManager]createFileAtPath: filepath contents:nilattributes:nil];
NSLog(@”result”,success);
printf(“Create File:%s %s.”,[filepath UTF8String], success ? “Success”: “Error”);

NSString* reValue= [NSString stringWithString:@”\”success\””];
NSLog(reValue);
******************************************************************************/
/************************************************************************************************************************************************************
7文件、文件夹操作
//如果”/Documents/Theme”路径不存在,则创建。
if(![[NSFileManagerdefaultManager]fileExistsAtPath:themePath])
{
[[NSFileManagerdefaultManager] createDirectoryAtPath:themePath attributes:nil];
}
//删除已存在的同名文件夹
if([[NSFileManagerdefaultManager] fileExistsAtPath:savePath]) {
[[NSFileManagerdefaultManager] removeItemAtPath:savePath error:NULL];
}
************************************************************************************************************************************************************/
/************************************************************************************************************************************************************
7 子线程抛给主线程:
[selfperformSelectorOnMainThread:@selector(shiftView) withObject:nilwaitUntilDone:YES];

************************************************************************************************************************************************************/
/************************************************************************************************************************************************************
8获取当前时间
NSDateFormatter*formatter = [[NSDateFormatteralloc] init];
[formatter setDateFormat:@”yyyy-MM-dd hh:mm:ss”];
NSString *locationString=[formatter stringFromDate: [NSDate date]];

//获取当前时间作为productId
NSDateFormatter*formatter = [[NSDateFormatteralloc] init];
[formatter setDateFormat:@”hhmmss”];
NSString *locationString=[formatter stringFromDate: [NSDate date]];
downloadInfo.productId = locationString;
[formatter release];
/******************************************************************************
函数名称  : getDate
函数描述  : 获取当前日期时间
输入参数  : N/A
输出参数  : N/A
返回值    : NSString 当前时间
备注     :
******************************************************************************/
-(NSString *)getDate
{
NSDateFormatter*formatter = [[NSDateFormatteralloc] init];
[formatter setDateFormat:@”yyyy-MM-dd EEEE HH:mm:ss a”];
NSString *locationString=[formatter stringFromDate: [NSDate date]];
[formatter release];
return locationString;
}
大写的H日期格式将默认为24小时制,小写的h日期格式将默认为12小时
不需要特别设置,只需要在dataFormat里设置类似”yyyy-MMM-dd”这样的格式就可以了
日期格式如下:
y  年  Year  1996; 96
M  年中的月份  Month  July; Jul; 07
w  年中的周数  Number  27
W  月份中的周数  Number  2
D  年中的天数  Number  189
d  月份中的天数  Number  10
F  月份中的星期  Number  2
E  星期中的天数  Text  Tuesday; Tue
a  Am/pm 标记  Text  PM
H  一天中的小时数(0-23)  Number  0
k  一天中的小时数(1-24)  Number  24
K  am/pm 中的小时数(0-11)  Number  0
h  am/pm 中的小时数(1-12)  Number  12
m  小时中的分钟数  Number  30
s  分钟中的秒数  Number  55
S  毫秒数  Number  978
z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00
Z  时区  RFC 822 time zone  -0800
************************************************************************************************************************************************************/
/************************************************************************************************************************************************************
读取和写入plist文件

plist文件是标准的xml文件,在cocoa中可以很简单地使用。这里介绍一下使用方法: 以下代码在Mac和iPhone中均适用。
写入plist文件: NSMutableDictionary * dict = [ [ NSMutableDictionary alloc ] initWith

plist文件是标准的xml文件,在cocoa中可以很简单地使用。这里介绍一下使用方法:

以下代码在Mac和iPhone中均适用。

写入plist文件:
NSMutableDictionary* dict = [ [ NSMutableDictionaryalloc ] initWithContentsOfFile:@”/Sample.plist”];
[ dict setObject:@”Yes”forKey:@”RestartSpringBoard”];
[ dict writeToFile:@”/Sample.plist”atomically:YES];

读取plist文件:

NSMutableDictionary* dict =  [ [ NSMutableDictionaryalloc ] initWithContentsOfFile:@”/Sample.plist”];
NSString* object = [ dict objectForKey:@”RestartSpringBoard” ];
************************************************************************************************************************************************************/

UIView翻转效果实现

新建一个view-based模板工程,在ViewController文件中添加下面的代码,即可实现翻转效果;

– (void)viewDidLoad {
[super viewDidLoad];
//需要翻转的视图

UIView *parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 200)];
parentView.backgroundColor = [UIColor yellowColor];
parentView.tag = 1000;

[self.view addSubview:parentView];
}

//需要在h头文件声明下面的动作响应函数
//在xib文件中添加一个button,其响应函数为下面的函数
//运行程序后,点击button就看到翻转效果
-(IBAction)ActionFanzhuan{

//获取当前画图的设备上下文
CGContextRef context = UIGraphicsGetCurrentContext();

//开始准备动画
[UIView beginAnimations:nil context:context];

//设置动画曲线,翻译不准,见苹果官方文档
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

//设置动画持续时间
[UIView setAnimationDuration:1.0];

//因为没给viewController类添加成员变量,所以用下面方法得到viewDidLoad添加的子视图
UIView *parentView = [self.view viewWithTag:1000];

//设置动画效果

[UIView setAnimationTransition: UIViewAnimationTransitionCurlDown forView:parentView cache:YES];  //从上向下
// [UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:parentView cache:YES];   //从下向上
// [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:parentView cache:YES];  //从左向右
// [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView:parentView cache:YES];//从右向左

//设置动画委托

[UIView setAnimationDelegate:self];

//当动画执行结束,执行animationFinished方法
[UIView setAnimationDidStopSelector:@selector(animationFinished:)];

//提交动画
[UIView commitAnimations];

}

//动画效果执行完毕
– (void) animationFinished: (id) sender{
NSLog(@”animationFinished !”);
}

运行程序,点击按钮,就能看到动画效果了

   iPhone 实现动画效果
iPhone中实现动画,主要有两种方式:UIView的动画块和Core Animation的CATransition类。

1、UIView的动画块
之所以称为动画块,是因为UView动画是成块运行的,也就是说作为完整的事务一次性运行。
beginAnimation:context:标志动画块开始;
commitAnimations标志动画块结束。(这个commit多少已经暗示这个操作是事务性的)
这里面通常涉及4个操作:
beginAnimation:context:标志动画块开始
setAnimationCurve:定义动画加速或减速的方式,有四种,ease-in/ease-out,ease-in,linear,ease-out
setAnimationDuration:定义动画持续时间(以秒为单位)
commitAnimations:标志动画块结束
所有这些操作都是针对UIView的,或者说是UIView的类函数。
给段代码示例:
1.    CGContextRef context = UIGraphicsGetCurrentContext();[UIView beginAnimations:nil context:context];[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];[UIView setAnimationDuration:2.0f];[UIView setAnimationBeginsFromCurrentState:YES];[UIView setAnimationDelegate:self];[UIView setAnimationDidStopSelector:@selector(animationFinished:)];[self.imageView setTransform:CGAffineTransformMakeScale(0.25f, 0.25f)];[UIView commitAnimations];

(这里面设置了动画的delegate,在动画结束后执行animationFinished:函数)

UIView除了实现上面这种简单的动画,还支持视图的翻转。例如在上面代码的[UIView commitAnimations]前加上下面这句,便可以实现视图的翻转(翻转后的试图中,imageView的大小变为原来的0.25倍):

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
其中,参数UIViewAnimationTransitionFlipFromLeft定义了翻转的方式。

 
 
 
关于UIView的userInteractionEnabled属性

如果父视图为ParentView包含一个Button,如果再ParentView上添加子视图ChildView,且ChildView盖住了Button,
那么Button就得到不响应了,为了让Button响应,可以设置ChildView的userInteractionEnabled = NO;
*近被这个问题困扰了很久,开始想用事件传递的方法,重写类继承自UIView,*后被这简单属性搞定了….

 
 
让一个UIImageView响应点击事件

UIImageView *imgView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0,320, 44)];
imgView.userInteractionEnabled=YES;
UITapGestureRecognizer *singleTap =[[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(onClickImage)];
[imgView addGestureRecognizer:singleTap];
[singleTap release];

-(void)onClickImage{
// here, do whatever you wantto do
NSLog(@”imageview is clicked!”);
}

 
iphone调用系统电话、浏览器、地图、邮件等
openURL的使用方法:
view plaincopy toclipboardprint?
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appString]];
其中系统的appString有:
view plaincopy toclipboardprint?
1.Map    http://maps.google.com/maps?q=Shanghai
2.Email  mailto://[email protected]
3.Tel    tel://10086
4.Msg    sms://10086
openURL能帮助你运行Maps,SMS,Browser,Phone甚至其他的应用程序。这是Iphone开发中我经常需要用到的一段代码,它仅仅只有一行而已。
– (IBAction)openMaps {
//打开地图
NSString*addressText = @”beijing”;
//@”1Infinite Loop, Cupertino, CA 95014″;
addressText =[addressTextstringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSString*urlText = [NSStringstringWithFormat:@”http://maps.google.com/maps?q=%@”,addressText];
NSLog(@”urlText=============== %@”, urlText);
[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:urlText]];
}

– (IBAction)openEmail {
//打开mail // Fire off an email to apple support
[[UIApplication sharedApplication]openURL:[NSURL   URLWithString:@”mailto://[email protected]”]];
}

– (IBAction)openPhone {

//拨打电话
// CallGoogle 411
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@”tel://8004664411″]];
}

– (IBAction)openSms {
//打开短信
// Text toGoogle SMS
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@”sms://466453″]];
}

-(IBAction)openBrowser {
//打开浏览器
// Lanuch any iPhone developers fav site
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@”http://itunesconnect.apple.com”]];
}       

 
 
 
iphone程序内调用谷歌地图

使用CLLocationManager类,MKMapView。并且实现<MKMapViewDelegate,CLLocationManagerDelegate>
//初始化CLLocationManager,CLLocationManager获得当前地理坐标
locmanager=[[CLLocationManager alloc]init];

[locmanager setDelegate:self];
//设置精确度
[locmanager setDesiredAccuracy:kCLLocationAccuracyBest];

[locmanagerstartUpdatingLocation];
执行完以后,会自动调用代理方法:

在代理方法:

– (void)locationManager:(CLLocationManager *)managerdidUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation{
//初始化矩形大小
CGRect rect=CGRectMake(0,0,320,460);
//设置地图大小为矩形大小
map=[[MKMapView alloc] initWithFrame:rect];

CLLocationCoordinate2Dloc=[newLocation coordinate];
lat=loc.latitude;
lon=loc.longitude;

//coordinate坐标
CLLocationCoordinate2DtheCoordinate;
CLLocationCoordinate2DtheCenter;

//theCoordinate.latitude=lat;
//theCoordinate.longitude=lon;
theCoordinate=loc;
[map setDelegate:self];
//设置地图显示的类型,有卫星地图,道路,等
[map setMapType:MKMapTypeStandard];
//[mapsetMapType:MKMapTypeSatellite];
//区域坐标Region(区域,地域)

MKCoordinateRegiontheRegin;
//theCenter.latitude=lat;
//theCenter.longitude=lon;
theCenter=loc;
theRegin.center=theCenter;

//坐标间距(span:间隔,间距)
MKCoordinateSpantheSpan;

theSpan.latitudeDelta=0.1;
theSpan.longitudeDelta=0.1;
//设置地图显示的区域,
theRegin.span=theSpan;
//[mapsetRegion:theRegin];
[map regionThatFits:theRegin];
map.showsUserLocation=YES;
[self.viewaddSubview:map];

}


– (MKAnnotationView *)mapView:(MKMapView *)mapViewviewForAnnotation:(id<MKAnnotation>)annotation{
NSLog(@”——-viewForAnnotation——-“);
//此类可以显示针一样的图标
MKPinAnnotationView *newAnnotation=[[MKPinAnnotationView  alloc] initWithAnnotation:annotationreuseIdentifier:@”annotation1”];

//newAnnotation.animatesDrop=YES;
//newAnnotation.animatesDrop=NO;

newAnnotation.pinColor=MKPinAnnotationColorPurple;
//显示标志提示
newAnnotation.canShowCallout=YES;
return newAnnotation;
}    

 
 
UIPageControl实现自定义按钮
有时候UIPageControl需要用到白色的背景, 那么会导致上面的点按钮看不见或不清楚,
我们可以通过继承该类重写函数来更换点按钮的图片现实.
实现思路如下.
新建类继承UIPageControl :
@interface MyPageControl : UIPageControl
{
UIImage*imagePageStateNormal;
UIImage*imagePageStateHighlighted;
}
– (id)initWithFrame:(CGRect)frame;
@property (nonatomic, retain) UIImage*imagePageStateNormal;
@property (nonatomic, retain) UIImage*imagePageStateHighlighted;
@end

声明了初始化该类的函数
用了两个UIImage保存两张图片, 大家知道的, UIPageCotrol的按钮分为两态, 一个是正常, 一个是高亮
接下来实现该类以及重写父类方法:
@interfaceMyPageControl(private)  // 声明一个私有方法, 该方法不允许对象直接使用
– (void)updateDots;
@end

@implementation MyPageControl  //实现部分

@synthesize imagePageStateNormal;
@synthesize imagePageStateHighlighted;

– (id)initWithFrame:(CGRect)frame { // 初始化
self = [superinitWithFrame:frame];
return self;
}

– (void)setImagePageStateNormal:(UIImage*)image {  // 设置正常状态点按钮的图片
[imagePageStateNormal   release];
imagePageStateNormal= [image retain];
[self updateDots];
}

-(void)setImagePageStateHighlighted:(UIImage *)image { // 设置高亮状态点按钮图片
[imagePageStateHighlightedrelease];
imagePageStateHighlighted= [image retain];
[self updateDots];
}

– (void)endTrackingWithTouch:(UITouch*)touch withEvent:(UIEvent *)event { // 点击事件
[superendTrackingWithTouch:touch withEvent:event];
[self updateDots];
}

– (void)updateDots { // 更新显示所有的点按钮
if(imagePageStateNormal || imagePageStateHighlighted)
{
NSArray*subview = self.subviews;  // 获取所有子视图
for(NSInteger i = 0; i < [subview count]; i++)
{
UIImageView*dot = [subview objectAtIndex:i];  // 以下不解释, 看了基本明白
dot.image= self.currentPage == i ? imagePageStateNormal : imagePageStateHighlighted;
}
}
}

– (void)dealloc { // 释放内存
[imagePageStateNormalrelease], imagePageStateNormal = nil;
[imagePageStateHighlightedrelease], imagePageStateHighlighted = nil;
[super dealloc];
}

@end
OK, 在添加处加入以下来实例化该对象代码:
MyPageControl *pageControl =[[MyPageControl alloc] initWithFrame:CGRectMake(0,0, 200, 30)];
pageControl.backgroundColor = [UIColorclearColor];
pageControl.numberOfPages = 5;
pageControl.currentPage = 0;
[pageControlsetImagePageStateNormal:[UIImageimageNamed:@”pageControlStateNormal.png”]];
[pageControl setImagePageStateHighlighted:[UIImageimageNamed:@”pageControlStateHighlighted.png”]];
[self.view addSubview:pageControl];
[pageControl release];     

 
    
iPhone电子书toolbar的实现
iPhone电子书的toolbar一般都设计成半透明,上面放置一个进度条和一个Label(用于显示页码),这里用代码做一个*基本的实现。
生成一个UIToolbar
UIToolbar *toolbar =[[[UIToolbar alloc] init] autorelease];
toolbar.barStyle=UIBarStyleBlackTranslucent;
[toolbar sizeToFit];
CGFloat toolbarHeight =[toolbar frame].size.height;
CGRect rootViewBounds =self.parentViewController.view.bounds;
CGFloat rootViewHeight =CGRectGetHeight(rootViewBounds);
CGFloat rootViewWidth =CGRectGetWidth(rootViewBounds);
CGRect rectArea = CGRectMake(0, rootViewHeight-toolbarHeight,rootViewWidth, toolbarHeight);
[toolbar setFrame:rectArea];
toolbar.backgroundColor= [UIColor clearColor];

生成一个Slider
UISlider*readSlider =[[[UISlideralloc]initWithFrame:CGRectMake(0,0, 225,30)] autorelease];
readSlider.minimumValue = 0.0f;
readSlider.maximumValue = 1.0f;
readSlider.continuous = YES;
readSlider.enabled = YES;

生成一个Label
UILabel*readLabel =[[[UILabelalloc]initWithFrame:CGRectMake(230,0, 50,30)] autorelease];
readLabel.backgroundColor = [UIColor clearColor];
readLabel.textColor =[UIColor whiteColor];

Slider和Label加入到toolbar中
NSMutableArray *tbitems =[NSMutableArray array];
[tbitems addObject:[[[UIBarButtonItem alloc]initWithCustomView:readSlider] autorelease]];
[tbitems addObject:[[[UIBarButtonItemalloc] initWithCustomView:readLabel]autorelease]];
toolbar.items = tbitems;

toolbar加入到当前view中
[self.navigationController.view addSubview:toolbar];

点击屏幕即隐藏的功能,将toolbar的hidden属性置为YES即可

toolBar.hidden = YES;

 
 
 
UIView中bounds和frame的差别?
翻译文档上的
bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系的坐标和大小
区别主要在坐标系这一块。
很明显一个是自己为原点的坐标系,一个是以屏幕为原点的坐标系。*对坐标。。。相对坐标。。。比如屏幕旋转的时候就要以相对来重绘。
frame 如果一个按钮,是在表格里,按钮的frame 的坐标也是相对的,并不是相对屏幕,也就是说是相对坐标,不是*对坐标
我也想知道任何一个uiview如何求得它在屏幕上的坐标。
view 的frame是view在它的super view 的位置与尺寸。
view 的bounds可以用来帮助它的subview来定位的 ,layoutSubviews。
Frame  is  in  terms  of  superview’s  coordinate  system
框架是从父视图的坐标系统
Bounds   is  in  terms  of   local  coordinate  system
是在局部坐标系统

%title插图%num

很明显,bounds的原点是(0,0)点,而frame的原点却是任意的。
frame 如果一个按钮,是在表格里,按钮的frame 的坐标也是相对的,并不是相对屏幕,也就是说是相对坐标,不是*对坐标。
frame 是相对坐标。bounds是*对坐标。
Android的开发过程中,*对坐标,这样画出来的位置都是相对于屏幕的而不是相对于控件的

什么是*对坐标值,相对坐标值?
*对坐标是:X,Y    就是相对于坐标原点的。
例如(15,20)相对坐标是:@X,Y   就是相对于参考点(可以是自己设定的一个点)。
例如(15,20)相对于参考点(1,1)的坐标,表示:@14,19
(15,20)相对于参考点(-1,-1)的坐标,表示:@16,21
bounds指这个view在它自己坐标系的坐标和大小 而frame指这个view在它superview的坐标系的坐标和大小.
区别主要在坐标系这一块。很明显一个是自己为原点的坐标系,一个是以屏幕为原点的坐标系。

%title插图%num


 
设置透明度
[myView setAlpha:value];   (0.0 < value < 1.0)

设置背景色    [myView setBackgroundColor:[UIColor redColor]];
                    (blackColor;darkGrayColor;lightGrayColor;whiteColor;grayColor; redColor; greenColor; blueColor; cyanColor;yellowColor;magentaColor;orangeColor;purpleColor;brownColor; clearColor; )

自定义颜色: UIColor *newColor = [[UIColor alloc] initWithRed:(float) green:(float) blue:(float) alpha:(float)];      0.0~1.0
宽度和高度 :  
 768X1024     1024X768    状态栏高 20 像素高   导航栏 工具栏 44像素高

 
 
iOS开发_iphone开发_iphone界面如何实现下拉列表

代码如下:
#import <UIKit/UIKit.h>
@interface DropDownList : UIView<UITableViewDelegate,UITableViewDataSource> {
UITextField* textField;   //文本输入框
NSArray* list;            //下拉列表数据
BOOL showList;             //是否弹出下拉列表
UITableView* listView;    //下拉列表
CGRect oldFrame,newFrame;   //整个控件(包括下拉前和下拉后)的矩形
UIColor *lineColor,*listBgColor;//下拉框的边框色、背景色
CGFloat lineWidth;               //下拉框边框粗细
UITextBorderStyle borderStyle;   //文本框边框style
}
@property (nonatomic,retain)UITextField *textField;
@property (nonatomic,retain)NSArray* list;
@property (nonatomic,retain)UITableView* listView;
@property (nonatomic,retain)UIColor *lineColor,*listBgColor;
@property (nonatomic,assign)UITextBorderStyle borderStyle;
-(void)drawView;
-(void)setShowList:(BOOL)b;
@end
#import “DropDownList.h”
@implementation DropDownList
@synthesize textField,list,listView,lineColor,listBgColor,borderStyle;
– (id)initWithFrame:(CGRect)frame {

if(self=[super initWithFrame:frame]){
//默认的下拉列表中的数据
list=[[NSArray alloc]initWithObjects:@”1″,@”2″,@”3″,@”4″,nil];

borderStyle=UITextBorderStyleRoundedRect;

showList=NO; //默认不显示下拉框
oldFrame=frame; //未下拉时控件初始大小
//当下拉框显示时,计算出控件的大小。
newFrame=CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height*5);

lineColor=[UIColor lightGrayColor];//默认列表边框线为灰色
listBgColor=[UIColor whiteColor];//默认列表框背景色为白色
lineWidth=1;     //默认列表边框粗细为1

//把背景色设置为透明色,否则会有一个黑色的边
self.backgroundColor=[UIColor clearColor];
[self drawView];//调用方法,绘制控件

}
return self;
}
-(void)drawView{
//文本框
textField=[[UITextField alloc]
initWithFrame:CGRectMake(0, 0,
oldFrame.size.width,
oldFrame.size.height)];
textField.borderStyle=borderStyle;//设置文本框的边框风格
[self addSubview:textField];
[textField addTarget:self action:@selector(dropdown) forControlEvents:UIControlEventAllTouchEvents];

//下拉列表
listView=[[UITableView alloc]initWithFrame:
CGRectMake(lineWidth,oldFrame.size.height+lineWidth,
oldFrame.size.width-lineWidth*2,
oldFrame.size.height*4-lineWidth*2)];
listView.dataSource=self;
listView.delegate=self;
listView.backgroundColor=listBgColor;
listView.separatorColor=lineColor;
listView.hidden=!showList;//一开始listView是隐藏的,此后根据showList的值显示或隐藏

[self addSubview:listView];
[listView release];
}
-(void)dropdown{
[textField resignFirstResponder];
if (showList) {//如果下拉框已显示,什么都不做
return;
}else {//如果下拉框尚未显示,则进行显示
//把dropdownList放到前面,防止下拉框被别的控件遮住

[self.superview bringSubviewToFront:self];
[self setShowList:YES];//显示下拉框
}
}
#pragma mark listViewdataSource method and delegate method
-(NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{
return list.count;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *cellid=@”listviewid”;
UITableViewCell* cell=[tableView dequeueReusableCellWithIdentifier:cellid];
if(cell==nil){
cell=[[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellid]autorelease];
}
//文本标签
cell.textLabel.text=(NSString*)[list objectAtIndex:indexPath.row];
cell.textLabel.font=textField.font;

cell.selectionStyle=UITableViewCellSelectionStyleGray;
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return oldFrame.size.height;
}
//当选择下拉列表中的一行时,设置文本框中的值,隐藏下拉列表
-(void)tableView:(UITableView *)tableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//NSLog(@”select”);
textField.text=(NSString*)[list objectAtIndex:indexPath.row];
//NSLog(@”textField.text=%@”,textField.text);
[self setShowList:NO];
}
-(BOOL)showList{//setShowList:No为隐藏,setShowList:Yes为显示
return showList;
}
-(void)setShowList:(BOOL)b{
showList=b;
NSLog(@”showlist is set “);
if(showList){
self.frame=newFrame;
}else {
self.frame=oldFrame;
}
listView.hidden=!b;
}
/*

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
– (void)drawRect:(CGRect)rect {
// Drawing code.
}
*/
– (void)dealloc {
[super dealloc];
}
@end

 
 
 
create toolbar using new
toolbar = [UIToolbar new];
toolbar.barStyle = UIBarStyleDefault;
[toolbar sizeToFit];
toolbar.frame = CGRectMake(0, 410, 320, 50);
 
 
iphone之UISegmentedControl
代码:
//选择按钮
NSArray*buttonNames = [NSArray arrayWithObjects:@”今天”, @”本周”, @”本月”,nil];
UISegmentedControl* segmentedControl = [[UISegmentedControl alloc]initWithItems:buttonNames];
[segmentedControl setFrame:CGRectMake(60, 10, 200, 40)];
segmentedControl.selectedSegmentIndex=1;
//添加事件
[segmentedControl addTarget:self action:@selector(segmentAction:)forControlEvents:UIControlEventValueChanged];
[self.viewaddSubview:segmentedControl];
[segmentedControl release];

//事件

-(void)segmentAction:(UISegmentedControl *)Seg{
NSIntegerIndex = Seg.selectedSegmentIndex;
NSLog(@”Seg.selectedSegmentIndex:%d”,Index);
}

 
 
iOS Programming – 触摸事件处理

iphone/ipad无键盘的设计是为屏幕争取更多的显示空间,大屏幕在观看图片、文字、视频等方面为用户带来了更好的用户体验。而触摸屏幕是iOS设备接受用户输入的主要方式,包括单击、双击、拨动以及多点触摸等,这些操作都会产生触摸事件。

在Cocoa中,代表触摸对象的类是UITouch。当用户触摸屏幕后,就会产生相应的事件,所有相关的UITouch对象都被包装在事件中,被程序交由特定的对象来处理。UITouch对象直接包括触摸的详细信息。
UITouch类中包含5个属性:
window:触摸产生时所处的窗口。由于窗口可能发生变化,当前所在的窗口不一定是*开始的窗口。
view:触摸产生时所处的视图。由于视图可能发生变化,当前视图也不一定时*初的视图。
tapCount:轻击(Tap)操作和鼠标的单击操作类似,tapCount表示短时间内轻击屏幕的次数。因此可以根据tapCount判断单击、双击或更多的轻击。
times*****p:时间戳记录了触摸事件产生或变化时的时间。单位是秒。
phase:触摸事件在屏幕上有一个周期,即触摸开始、触摸点移动、触摸结束,还有中途取消。而通过phase可以查看当前触摸事件在一个周期中所处的状态。phase是UITouchPhase类型的,这是一个枚举配型,包含了          · UITouchPhaseBegan(触摸开始)
· UITouchPhaseMoved(接触点移动)
· UITouchPhaseStationary(接触点无移动)
· UITouchPhaseEnded(触摸结束)
· UITouchPhaseCancelled(触摸取消)
UITouch类中包含如下成员函数:
– (CGPoint)locationInView:(UIView *)view:函数返回一个CGPoint类型的值,表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。
– (CGPoint)previousLocationInView:(UIView *)view:该方法记录了前一个坐标值,函数返回也是一个CGPoint类型的值, 表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。
当手指接触到屏幕,不管是单点触摸还是多点触摸,事件都会开始,直到用户所有的手指都离开屏幕。期间所有的UITouch对象都被包含在UIEvent事件对象中,由程序分发给处理者。事件记录了这个周期中所有触摸对象状态的变化。
只要屏幕被触摸,系统就会报若干个触摸的信息封装到UIEvent对象中发送给程序,由管理程序UIApplication对象将事件分发。一般来说,事件将被发给主窗口,然后传给*响应者对象(FirstResponder)处理。
关于响应者的概念,通过以下几点说明:
响应者对象(Response object)  响应者对象就是可以响应事件并对事件作出处理。在iOS中,存在UIResponder类,它定义了响应者对象的所有方法。UIApplication、UIView等类都继承了UIResponder类,UIWindow和UIKit中的控件因为继承了UIView,所以也间接继承了UIResponder类,这些类的实例都可以当作响应者。
*响应者(First responder)
当前接受触摸的响应者对象被称为*响应者,即表示当前该对象正在与用户交互,它是响应者链的开端。
响应者链(Responder chain)  响应者链表示一系列的响应者对象。事件被交由*响应者对象处理,如果*响应者不处理,事件被沿着响应者链向上传递,交给下一个响应者(next responder)。一般来说,*响应者是个视图对象或者其子类对象,当其被触摸后事件被交由它处理,如果它不处理,事件就会被传递给它的视图控制器对象(如果存在),然后是它的父视图(superview)对象(如果存在),以此类推,直到顶层视图。接下来会沿着顶层视图(top view)到窗口(UIWindow对象)再到程序(UIApplication对象)。如果整个过程都没有响应这个事件,该事件就被丢弃。一般情况下,在响应者链中只要由对象处理事件,事件就停止传递。但有时候可以在视图的响应方法中根据一些条件判断来决定是否需要继续传递事件。
管理事件分发  视图对触摸事件是否需要作处回应可以通过设置视图的userInteractionEnabled属性。默认状态为YES,如果设置为NO,可以阻止视图接收和分发触摸事件。除此之外,当视图被隐藏(setHidden:YES)或者透明(alpha值为0)也不会收事件。不过这个属性只对视图有效,如果想要整个程序都步响应事件,可以调用UIApplication的beginIngnoringInteractionEvents方法来完全停止事件接收和分发。通过endIngnoringInteractionEvents方法来恢复让程序接收和分发事件。
如果要让视图接收多点触摸,需要设置它的multipleTouchEnabled属性为YES,默认状态下这个属性值为NO,即视图默认不接收多点触摸。

 
键盘透明
textField.keyboardAppearance = UIKeyboardAppearanceAlert;
iPhone键盘改变颜色
只有这2种数字键盘才有效果:UIKeyboardTypeNumberPad,UIKeyboardTypePhonePad
keyboardAppearance = UIKeyboardAppearanceAlert
代码如下:

  1.    NSArray *ws = [[UIApplication sharedApplication] windows];
  2.     for(UIView *w in ws){
  3.         NSArray *vs = [w subviews];
  4.         for(UIView *v in vs){
  5.             if([[NSString stringWithUTF8String:object_getClassName(v)] isEqualToString:@”UIKeyboard”]){
  6.                 v.backgroundColor = [UIColor redColor];
  7.             }
  8.         }
  9.     }

从一个界面push到下一界面左上角返回按钮文字设置
在父viewController中如下设置:
UIBarButtonItem *backbutton = [[UIBarButtonItem alloc]init];
backbutton.title = @”返回列表”;
self.navigationItem.backBarButtonItem = backbutton;
[backbutton release];

更改cell选中的背景
UIView *myview = [[UIView alloc] init];
myview.frame = CGRectMake(0, 0, 320, 47);
myview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@”0006.png”]];
cell.selectedBackgroundView = myview; 
 
navigationbar的back键触发其他事件
UIButton *back =[[UIButton alloc] initWithFrame:CGRectMake(200, 25, 63, 30)];
[back addTarget:self action:@selector(reloadRowData:) forControlEvents:UIControlEventTouchUpInside];
[back setImage:[UIImage imageNamed:@”返回按钮.png”] forState:UIControlStateNormal];
UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:back];
self.navigationItem.backBarButtonItem =backButtonItom;
[back release];
[backButtonItem release];
防止屏幕暗掉锁屏

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

将图片从左到右翻页效果显示

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 0, 470)];
[imageView setImage:[UIImage imageNamed:@”Bg.jpg”]];
self.myImageView =imageView;
[self.view addSubview:imageView];
[imageView release];
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.5];
[myImageView setFrame:CGRectMake(0, 0, 310, 470)];
[UIView commitAnimations];

让覆盖在下面层的视图接受触摸事件

searchImage.exclusiveTouch = YES;//*层
searchImage.userInteractionEnabled = NO;
myMapView.exclusiveTouch = NO;//第二层
myMapView.userInteractionEnabled = YES;

View的缩放

NSValue *touchPointValue = [[NSValue valueWithCGPoint:CGPointMake(100,100)] retain];
[UIView beginAnimations:nil context:touchPointValue];
transform = CGAffineTransformMakeScale(0.1,0.21);
firstPieceView.transform = transform;
[UIView commitAnimations];   

 
 
点击 UITextView 输入文字,光标都从*初点开始
能让用户点击 UITextView 输入文字时,光标都从*初点开始
– (void)textViewDidChangeSelection:(UITextView *)textView
{
NSRange range;
range.location = 0;
range.length  = 0;
textView.selectedRange = range;
 
 
UITextView在光标处添加文字
// 获得光标所在的位置
int location =contentTextView.selectedRange.location;
// 将UITextView中的内容进行调整(主要是在光标所在的位置进行字符串截取,再拼接你需要插入的文字即可)
NSString *content = contentTextView.text;
NSString *result = [NSStringstringWithFormat:@”%@[姓名变量]%@”,[contentsubstringToIndex:location],[contentsubstringFromIndex:location]];
// 将调整后的字符串添加到UITextView上面
contentTextView.text = result;
 
 
如何设置UITextView的光标位置
UITextView * m_textInput;
//设置光标到输入文字的末尾
NSUInteger length = m_textInput.text.length;
m_textInput.selectedRange = NSMakeRange(length,0);     
 
 
UITextView方法 用法
UITextView限制行数的问题之前试了好多方法,*终解决了,解决方法非常简单,在UITextViewDelegate中加下面的方法即可:
-(BOOL)textView:(UITextView *)textViewshouldChangeTextInRange:(NSRange)range
replacementText:(NSString*)text {
if (textView.contentSize.height > 104){
textView.text = [textView.text substringToIndex:[textView.textlength]-1];
returnNO;
}
return YES;
}
-(void)textViewDidChangeSelection:(UITextView*)textView
每次输入都知道
[textView becomeFirstResponder]
(void)textViewDidChange:(UITextView*)textView 当textView的内容发生改变时,会调用。。再此计算已经输入的字符个数。
– (BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)rangereplacementText:(NSString *)text; {
if([@”\n” isEqualToString:text] == YES) {
[textViewresignFirstResponder];
returnNO;
}
returnYES;
}
 
 
textview根据光标插入数据 
UITableViewCell *cell =  [tableView cellForRowAtIndexPath:indexPath];
//定位光标
NSRange range = [opinion selectedRange];
NSMutableString *top = [[NSMutableString alloc] initWithString:[opinion text]];
NSString *addName = [NSString stringWithFormat:@”%@、”,cell.textLabel.text];
[top insertString:addName atIndex:range.location];
opinion.text = top;
[top release];
 
iphone中的UITouch
手指在屏幕上能达到的精度和鼠标指针有很大的不同。当用户触击屏幕时,接触
区域实际上是椭圆形的,而且比用户想像的位置更靠下一点。根据触摸屏幕的手指、手指的尺寸、手指接触屏幕的力量、手指的方向、以及其它因素的不同,
其“接触部位”的尺寸和形状也有所不同。底层的多点触摸系统会分析所有的这些信息,为您计算出单一的触点。

UIResponder 是所有响应者对象的基类,
它不仅为事件处理,而且也为常见的响应者行为定义编程接口。UIApplication、UIView、和所有从UIView 派生出来的UIKit 类(包括UIWindow)都直接或间接地继承自UIResponder类。

– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch* touch = [touches anyObject];
NSUInteger numTaps = [touch tapCount];
if (numTaps < 2) {
[self.nextResponder touchesBegan:touches withEvent:event];
} else {
[self handleDoubleTap:touch];
}
}

缺省情况下,视图会接收触摸事件。但是,您可以将其userInteractionEnabled
属性声明设置为NO,关闭事件传递的功能。

在一定的时间内关闭事件的传递。应用程序可以调用UIApplication 的
beginIgnoringInteractionEvents 方法,并在随后调用endIgnoringInteractionEvents 方法来实现这个目的。

缺省情况下,视图只接收多点触摸序列的*个触摸事件,而忽略
所有其它事件。如果您希望视图处理多点触摸,就必须使它启用这个功能。在代码或Interface Builder 的查看器窗口中将视图的multipleTouchEnabled 属性设置为YES,就可以实现这个目标。
将事件传递限制在某个单独的视图上。缺省情况下,视图的exclusiveTouch 属性被设置为NO。将这个属性设置为YES 会使相应的视图具有这样的特性:即当该视图正在跟踪触摸动作时,窗口中的其它视图无法同时进行跟踪,它们不能接收到那些触摸事件。
多点触摸:
– (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
– (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
– (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
– (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

当一个或多个手指触碰屏幕时,发送touchesBegan:withEvent:消息。
当一个或多个手指在屏幕上移动时,发送touchesMoved:withEvent:消息。
当一个或多个手指离开屏幕时,发送touchesEnded:withEvent:消息。
当触摸序列被诸如电话呼入这样的系统事件所取消时,发送touchesCancelled:withEvent:消息。
上面这些方法都和特定的触摸阶段(比如UITouchPhaseBegan)相关联,该信息存在于UITouch 对象的phase 属性声明中。
为了处理给定阶段的事件,响应者对象常常从传入的集合参数中取得一或多个UITouch 对象,然后考察这些对象的属性或取得它们的位置(如果需要处理所有触摸对象,可以向该NSSet 对象发送anyObject 消息)。UITouch 类中有一个名为locationInView:的重要方法,如果传入self 参数值,它会给出触摸动作在响应者坐标系统中的位置(假定该响应者是一个UIView 对象,且传入的视图参数不为nil)。另外,还有一个与之平行的方法,可以给出触摸动作之前位置(previousLocationInView:)。UITouch 实例的属性还可以给出发生多少次触
碰(tapCount)、触摸对象的创建或*后一次变化发生在什么时间(times*****p)、以及触摸处于什么阶段(phase)。

– (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
if ([touch tapCount] == 2) {
CGPoint tapPoint = [theTouch locationInView:self];
// Process a double-tap gesture
}
}
在touchesEnded:withEvent:方法中,当触击次数为一时,响应者对象就向自身发送一个performSelector:withObject:afterDelay:消息,其中的选择器标识由响应者对象实现的、用于处理单击手势的方法;第二个参数是一个NSValue 或NSDictionary 对象,用于保存相关的UITouch 对象;时延参数则表示单击和双击手势之间的合理时间间隔。
在touchesBegan:withEvent:方法中,如果触击次数为二,响应者对象会向自身发送一个cancelPreviousPerformRequestsWithTarget:消息,取消当前被挂起和延期执行的调用。如果触碰次数不为二,则在指定的延时之后,先前步骤中由选择器标识的方法就会被调用,以处理单击手势。

 
 
Iphone开发-NSRunLoop概述和原理
1.什么是NSRunLoop?
我们会经常看到这样的代码:

– (IBAction)start:(id)sender
{
pageStillLoading = YES;
[NSThread detachNewThreadSelector:@selector(loadPageInBackground:)toTarget:self withObject:nil];
[progress setHidden:NO];
while (pageStillLoading) {
[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
[progress setHidden:YES];
}
  这段代码很神奇的,因为他会“暂停”代码运行,而且程序运行不会因为这里有一个while循环而受到影响。在[progress setHidden:NO]执行之后,整个函数像暂停了一样,停在循环里面,等loadPageInBackground里面的操作都完成了以后,
才让[progress setHidden:YES]运行。这样做就显得简单,而且逻辑很清晰。如果不这样做,就需要在loadPageInBackground里面表示load完成的地方调用[progress setHidden:YES],显得代码不紧凑而且容易出错。
那么具体什么是NSRunLoop呢?其实NSRunLoop的本质是一个消息机制的处理模式。如果你对vc++编程有一定了解,在windows中,有一系列很重要的函数SendMessage,PostMessage,GetMessage,
这些都是有关消息传递处理的API。但是在你进入到Cocoa的编程世界里面,我不知道你是不是走的太快太匆忙而忽视了这个很重要的问题,Cocoa里面就没有提及到任何关于消息处理的API,
开发者从来也没有自己去关心过消息的传递过程,好像一切都是那么自然,像大自然一样自然?在Cocoa里面你再也不用去自己定义WM_COMMAD_XXX这样的宏来标识某个消息,
也不用在switch-case里面去对特定的消息做特别的处理。难道是Cocoa里面就没有了消息机制?答案是否定的,只是Apple在设计消息处理的时候采用了一个更加高明的模式,那就是RunLoop。
 
 
利用NSRunLoop阻塞NSOperation线程
在使用NSOperationQueue简化多线程开发中介绍了多线程的开发,我这里主要介绍一下使用NSRunLoop阻塞线程。
主要使用在NStimer定时启用的任务或者异步获取数据的情况如socket获取网络数据,要阻塞线程,直到获取数据之后在释放线程。
下面是线程中没有使用NSRunLoop阻塞线程的代码和执行效果:
线程类:

#import <Foundation/Foundation.h>
@interface MyTask : NSOperation {
}
@end

#import “MyTask.h”
@implementation MyTask
-(void)main
{
NSLog(@”开始线程=%@”,self);
[NSTimer timerWithTimeInterval:2 target:self selector:@selector(hiandeTime:) userInfo:nil repeats:NO];
}
-(void)hiandeTime:(id)sender
{
NSLog(@”执行了NSTimer”);
}
-(void)dealloc
{
NSLog(@”delloc mytask=%@”,self);
[super dealloc];
}
@end

线程添加到队列中:

– (void)viewDidLoad
{
[super viewDidLoad];
NSOperationQueue *queue=[[NSOperationQueue alloc] init];
MyTask *myTask=[[[MyTask alloc] init] autorelease];
[queue addOperation:myTask];
MyTask *myTask1=[[[MyTask alloc] init] autorelease];
[queue addOperation:myTask1];
MyTask *myTask2=[[[MyTask alloc] init] autorelease];
[queue addOperation:myTask2];
[queue release];
}
执行结果是:
2011-07-25 09:44:45.393 OperationDemo[20676:1803] 开始线程=<MyTask: 0x4b4dea0>
2011-07-25 09:44:45.393 OperationDemo[20676:5d03] 开始线程=<MyTask: 0x4b50db0>
2011-07-25 09:44:45.396 OperationDemo[20676:1803] 开始线程=<MyTask: 0x4b51070>
2011-07-25 09:44:45.404 OperationDemo[20676:6303] delloc mytask=<MyTask: 0x4b4dea0>
2011-07-25 09:44:45.404 OperationDemo[20676:5d03] delloc mytask=<MyTask: 0x4b50db0>
2011-07-25 09:44:45.405 OperationDemo[20676:6303] delloc mytask=<MyTask: 0x4b51070>
可以看到,根本没有执行NSTimer中的方法,线程就释放掉了,我们要执行
NSTimer中的方法,就要利用NSRunLoop阻塞线程。下面是修改后的代码:

-(void)main
{
NSLog(@”开始线程=%@”,self);
NSTimer *timer=[NSTimer timerWithTimeInterval:2 target:self selector:@selector(hiandeTime) userInfo:nil repeats:NO];
[timer fire];
while (!didDisconnect) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
}
}

执行结果如下:

2011-07-25 10:07:00.543 OperationDemo[21270:1803] 开始线程=<MyTask: 0x4d16380>
2011-07-25 10:07:00.543 OperationDemo[21270:5d03] 开始线程=<MyTask: 0x4d17790>
2011-07-25 10:07:00.550 OperationDemo[21270:6303] 开始线程=<MyTask: 0x4d17a50>
2011-07-25 10:07:00.550 OperationDemo[21270:1803] 执行了NSTimer
2011-07-25 10:07:00.551 OperationDemo[21270:5d03] 执行了NSTimer
2011-07-25 10:07:00.552 OperationDemo[21270:6303] 执行了NSTimer
2011-07-25 10:07:00.556 OperationDemo[21270:6503] delloc mytask=<MyTask: 0x4d16380>
2011-07-25 10:07:00.557 OperationDemo[21270:6303] delloc mytask=<MyTask: 0x4d17790>
2011-07-25 10:07:00.557 OperationDemo[21270:5d03] delloc mytask=<MyTask: 0x4d17a50>

我们可以使用NSRunLoop进行线程阻塞。

 
 
loadView:
(加载视图)
– 建立层次结构
– 在不使用 Interface Builder 的时候发生
viewDidLoad:
(视图已加载)
– 加载附加的资源和数据
viewWillAppear:
(视图快要被显示)
– 准备在屏幕上加载
– 视图不会在每次显示重新加载
viewDidAppear:
(视图已被显示)
– 动画和其他视觉元素被加载
 
 
 
BOOL和bool的区别
1、类型不同
BOOL为int型  bool为布尔型
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节
3、取值不同
bool取值false和true,是0和1的区别; false可以代表0,但true有很多种,并非只有1。
如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。
BOOL是微软定义的typedef int BOOL(在windef.h中)。
布尔型变量bool
bool是布尔型变量,也就是逻辑型变量的定义符,类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。
在objective-c中提供了相似的类型BOOL,它具有YES值和NO值。 布尔型变量的值只有 真 (true) 和假 (false)。
布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。
bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。
布尔型运算结果常用于条件语句,
if (逻辑表达式)
{
如果是 true 执行这里;
}
else
{
如果是 false 执行这里;
};

BOOL在iphone程序开发中很重要,一般配合if语句进行判断,处理程序中逻辑关系!

 
if 语句与布尔值
if 语句是 C++/C 语言中*简单、*常用的语句,然而很多程序员用隐含错误的方式
写 if 语句。
假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:
if (flag) // 表示 flag 为真
if (!flag) // 表示 flag 为假
其它的用法都属于不良风格,例如:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)
 
 

TextView自适改变高度

 sizeWithFont:constrainedToSize:lineBreakMode:

16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南

如果你的旧 iPhone 已经无法支持你日常使用了,你会怎么处理这部 iPhone 呢?卖掉还是留起来收藏呢?近日,国外一名 16 岁的小开发者在 YouTube 上发布了一则视频,展示了自己是如何将 Linux 移植到一部无法使用的 iPhone 7。

2020 年 3 月,Corellium 提出了 Project Sandcastle,通过使用 checkra1n 越狱程序在 iPhone 上成功运行 Android,激发了开发者对那些旧型号的 iPhone 进行“改造”的热情。此后,很多开发者尝试对自己的旧设备进行“改造”,试图将 Linux 发行版移植到那些旧型号的 iPhone 上,为这些本该“吃灰”的设备延长寿命。

近日,国外一名 16 岁的小开发者 Daniel Rodriguez 成功地将 Linux Ubuntu 20.04 移植到了 iPhone 上。

图片

图片来源于 xda-developers

据 Daniel 介绍,他使用的 iPhone 7 是他外婆的,这部设备已经完全无法访问 NVMe NAND,这意味着这部设备已经无法再运行 iOS 系统,就是大家常说的“变砖”,不过这部 iPhone 7 的硬件设备没有任何故障和损坏,于是 Daniel 拿来了这部手机,准备将它改造一番。

Daniel 参考并使用了 checkra1n,linux-sandcastle,projectsandcastle 等开源项目,同时自己编写了网桥设置 script/udev 规则来实现这一复杂的工作。*终成功地在这部 iPhone7 上运行了 Ubuntu 20.04。

Daniel 还在 Reddit 上分享了一份十分详细的指南,说明自己是如何成功制造出这部「iPhone 7 Ubuntu Edition」,有经验的开发者甚至可以直接按照该教程进行操作。而对于没有经验的用户,过程就会相对繁琐了不少,因为需要开发者事先手动编译内核并使用 checkra1n 访问 pongoOS 引导前执行环境。有兴趣的小伙伴可以移步 Reddit:

https://www.reddit.com/r/linux/comments/kux9xx/success_iphone_7_with_dead_nand_netbooting/

Daniel 表示,他自己在家里搭建了一组服务器,用于运行自己的俱乐部网站和游戏服务器。现在,他把改造后的 iPhone 7 当作一台服务器用来分担他的服务器的负载。而 iPhone 7 的 A10 芯片也发挥出了超乎 Daniel 想象的性能。

尝试将 Ubuntu 移植到 iPhone 7 上并不奇怪,因为该 Ubuntu 系统对于 Linux 内核并不陌生。此前的 postmarketOS 项目就是将 Linux 引入 iPhone 7 和 iPhone 7 Plus。虽然在 iPhone 上安装像 Ubuntu 这样的 GNU / Linux 发行版不会给用户带来与 iOS 相同的使用体验,但将旧设备改造并成功运行 Linux 无疑是一件很酷的事情。

他将改造成功的经历和指南发布到 Reddit 上后,迅速引发了广大开发者和用户的关注,很多用户称他为「天才」,不过 Daniel 却很谦虚,他表示,“这些都应该归功于 Corellium、checkra1n 项目的开发人员、Linus Torvalds 以及 Linux 内核的所有贡献者、Ubuntu 和 Debian 维护者等等。他们是为这个项目制作所有作品的真正英雄,而我只是恰好在 iPhone 上组装了这些前辈们留下的拼图。”

巨详细的iphone新手教程

1. /private/var/mobile  新刷完的机器,要在这个文件夹下建一个Documents的目录,很多程序都要用到。

2. /private/var/mobile/Applications  通过AppStore和iTunes安装的程序都在里面。

3. /private/var/stash  这个文件夹下的Applications目录里面是所有通过Cydia和app安装的程序,Ringtones目录里是所有的手机铃音,自制铃音直接拷在里面即可,Themes目录里是所有Winterboard主题,可以手工修改。

4. /var/mobile/Media/ROMs/GBA  gpsPhone模拟器存放rom的目录。

5. /var/mobile/Media/textReader  textReader看书软件读取的电子书的存放路径。(我这里修正了原帖说明上的错误)

6. /Applications/WeDictPro.app或/Applications/WeDict.app(WeDict目录,WeDict字典放在该目录下,权限644不变)

7.  /System/Library/Fonts/Cache(系统字体目录,要替换的字体放在该目录下,权限644不变)

8.  /private/var/mobile/Media/Maps(离线地图目录,把地图文件夹放到该目录下,文件夹赋予777权限)

9.  /private/var/mobile/Library/Downloads (ipa文件存放目录,把下载来的ipa文件放到此目录下,用Installous安装,后文会讲到)

10.  /private/var/mobile/Library/Keyboard (系统拼音字库文件位置)

11.  /var/stash/Themes.XXXXXX  (winterboard主题文件存放路径)

12.  /private/var/mobile/Media/DCIM/999APPLE  (系统自带截屏文件存放路径,截屏方法:按住Power并快速按一下Home键)

13.  /private/var/mobile/Media/Wikipedia/  (WIKI百科文件夹存放路径)

14.  /System/Library/Frameworks/UIKit.framework和/System/Library/PrivateFrameworks/AppSupport.framework(这两个都是电话号码显示规则文件存放路径)

15: /private/var/mobile/Library/AddressBook  (这个是电话本的存放路径)

16:/private/var/mobile/Library/SMS (这个是短信的存放路径)

17:/private/var/mobile/Library/Notes  (这个是记事本的存放路径)

完美解决iPhone的划痕

我想,广大疯友在小I的外壳上*大的烦恼就是不断增加的细小划痕是吧,有的TX说用牙膏,呵呵,那个不行的,是能够减小划痕,但是呢,会使小I的背壳看上去就没那么亮了哦 。通过我的试验,终于找到方法可以让小I的背壳的细小划痕消失,而且不会使小I的光亮度减小哦。。。

方法如下:

首先是工具:1、买小I时赠送的擦机布或者麂皮,其他的布料会引起划痕。2、这是关键,就是3M镜面蜡!这是个好东西哦!

操作步骤:1、少量3M镜面蜡涂在小I背壳上。2、用擦机布使劲来回擦。3、这步也关键,当蜡变干以后,逐步减小手的力量,轻轻快速来回擦。

注意事项:擦的时候力道要使在手指的手肚上,不要用指甲使劲哦,不然会产生新的划痕!
大家去试试吧,不会让你失望的!!
3M镜面蜡在汽车美容店就可以找到哦。
此方法同样适用于AIR JACKET等透明保护壳。我已经试验过的,大家放心的去做吧!还小I一个崭新的面容!(太深的划痕不起作用!不过我想太深的划痕是不是可以先用3M粗蜡擦,然后细蜡擦,*后再用镜面蜡,或者不用粗蜡,因为粗蜡确实太粗了。我没试验过,划痕多且深且愿意试的同学可试一下。)
看贴记得回帖哦。

教你节省iPhone的运行内存

iPhone,在破解或多装了一些应用程序后,都存在反应慢、很卡或者无故退出等问题。这都是因为运行内存不足造成的,下面的教程可以解决这个问题。   1.首先我们需要安装BossPrefs,也可以从Cydia上下载。
2.其次我们还需要下载一些服务开关插件。下载后解压,并上传至iPhone的/private/var/stash/Applications.xxxxxx/BossPrefs.app/services文件夹中。
3.运行BossPrefs,可以看到多了FairPlaydSvr、SysLogdSvr、UpdateSvr、WeFitSvr、PandaDemonSvr、PdaNetSvr、Wiki2touchSvr等7个选项(图1),选择开启或关闭即可。
4.大家可以按需要随时启动或关闭上述服务,无需重启iPhone,效果等同于Windows的服务管理器——当你在BossPrefs关闭上述任一服务时,会立即从内存中卸载该项服务,并把占用的内存释放出来。当选择打开该服务时,则会立即启动该项服务。
这些服务是什么意思呢?下面给大家说明一下:
SysLogdSvr:iPhone日志服务,占用13M内存;
UpdateSvr:iPhone更新服务,占用12M内存;
FairPlaydSvr:FairPlayd服务,占用17M内存;(注意:这个不能关闭,否则有些程序运行不了)
PandaDemonSvr:网龙91助手的守护程序,占用20M内存;
WeFitSvr:WeFit输入法服务,占用41.6M内存;
Wiki2touchSvr:wiki服务,占用20M内存。
5.上述服务,平时都可关掉,当要用到网龙91助手、Wefit等服务时,只需到BossPrefs中启动相应服务即可,无需重启手机。
优化以后,反应慢、卡、无故退出等情况,基本上彻底消失。

主题安装,美化你的IPHONE

首先在安装主题之前,需要安装软件winterboard,该软件在cydia和91手机助手中,都可以找到并安装

1.操作界面主题:

使用91手机助手打开“媒体娱乐”

点选“手机主题”

然后就可以从网络上下载主题了,我们任意选择其中一款主题点击下载,下载完成后91手机助手会提示是否立即启用,选择是,则使用该主题,touch会注销界面进入锁屏界面,解锁之后就可以看到你所安装的主题了

如果你是从网页上下载的主题包,一样可以通过91手机助手安装,点选“iphone上的主题”

选择*下方的“添加主题”

然后找到你下载并已经解压的主题文件夹,无需打开,直接右下的确定即可

导入之后,点击左下的“启用主题”就可以了

2.美化锁屏界面:

很多新手朋友破解之后,可能对锁屏主题的安装还不太了解,我在这里也介绍下使用方法
首先从网页上下载你喜欢的锁屏界面主题
使用91手机助手,点击“文件管理”

打开路径/library/themes,选择右上角的”上传”选择其中的“上传目录”

找到你需要使用的锁屏主题文件夹,上传,权限设置775

然后打开IP上所安装的winterboard,找到你刚刚上传的锁屏主题,勾选,(不要取消本来的界面主题)home键退出,等待小菊花转完,锁屏主题就安装成功了

3.锁屏天气主题:

有不少朋友可能希望为锁屏界面上显示天气信息,论坛上下载的可能与你所在城市的信息不符,自己改代码可能又有些困难,推荐一个网站制作锁频天气主题
http://www.joyiphone.net/

打开网站,点击上方的“自制农历天气主题”

将会出现15个模块,有主界面显示天气的,有锁屏显示,这里我们就制作锁屏显示的,点击其中一个

然后出现制作页面,非常简单下方有选择省份,城市

选择你所在的省份和城市,点击“下一步”

然后完成制作,点击“立即下载”

下载好压缩包,解压之后,按照前面所说的方法将主题导入路径/library/themes,权限设置775,然后进入winterboard选择你所上传的锁屏天气主题,home键退出,等待小菊花转完就可以看见了

4.电池图标更换:

看腻了系统自带的电池图标?想换一个又不知道该怎么办?请继续看下去
从网页论坛等地下载你所喜欢的电池图标,解压之后打开找到里面电池图标的图片
然后使用91手机助手打开路径/System/Library/CoreServices/SpringBoard.app
点击“上传”,选择“上传文件”

将你刚刚解压的电池图标全部上传至/System/Library/CoreServices/SpringBoard.app文件夹下,替换同名文件,设置用户为root,权限为644

然后重启IP即可

关键词:山寨

准备入手IPHONE的朋友都怕会买到山寨的IPHONE吧.现在来说几个*基本的鉴别方法:山寨的后盖可以轻易打开.SIM卡在机后面,可以插内存,有内置收音机,可以轻易换手机电池,当然.我的意思是.真的IPHONE这些都不可以….

关键词:翻新机

相信各位买IPHONE*担心的还是买到翻新机吧,这里教大家几招.  非翻新机特点:三码合一(一定会有人问什么是三码合一了吧?就是说卡托.-装SIM卡的地方  机器里  设置-通用-关于本机-序列号  IPHONE盒子下面.  这三个地方的号码一样,就说明不是翻新机.另外还有一码.是电子FaPiao上的..除了官网买的外.这一码是没有的.这个无关紧要.另外有些朋友问盒子下面的码对不上,这个是有可能的,但*非翻新,因为有些商家从香港带过来盒子乱了…但如果机器和卡托的不一样,,,那就不好意思了..翻新机.!! 另外还可以看IPHONE的金属边,新机是不会有刮痕的. 还可以看我刚刚说的那个序列号. 像我的序列号是8281781NY7H.从左往由数第3位是生产年4.5位是星期.我的序列号就可以看出,我的机是08年17周生产,大家可以以此推算是否翻新.说一句.1代市面上没有全新的了.全是翻新和二手,2代也快断产了.*后,大家买手机总得看价格吧.?便宜没好货.

关键词8827

上节说到序列号.现在说的这个88827就是表示序列号的前5位.88827的机一般是一些商家为了暴利.将美版IPHONE通过程序修改成港版,使机器能被ITUNES识别成港版..现在88827的机一般存在于2代IPHONE中.大家买2代的时候一定要擦亮眼睛…

关键词:版本

IPHONE的众多版本使得IPHONE价钱不一.这里面的差价高达1000.我把各种版本发上来供大家参考市面上*多的美版编号:
MB046LL/A ,MB048LL/A ,MB499LL/A ,MB702LL/A ,MB704LL/A ,MB705LL/A APPLE官方无锁版编码:
香港/澳门行货: MB489ZP/A MB496ZP/A MB500ZP/A
新西兰Vodafone: MB489X/A MB496X/A MB500X/A
新加坡行货: MB489ZA/A MB496ZA/A MB500ZA/A
意大利TIM/Vodafone:MB489T/A MB496T/A MB500T/A
捷克行货: MB489CZ/A MB496CZ/A MB500CZ/A
MB490CZ/A MB497CZ/A MB501CZ/A
希腊行货: MB489GR/A MB496GR/A MB500GR/A
卢森堡行货: MB489NF/A MB496NF/A MB500NF/A
俄罗斯行货: MB489RS/A MB496RS/A MB500RS/A
南非行货: MB489SO/A MB496SO/A MB500SO/A
有些朋友不知道怎么查看自己手机的型号    设置-通用-关于本机-型号

关键词:有锁.无锁

大家一定奇怪为什么有锁无锁版本差价会这么大..原因就是有锁的不可以随便升级固件.无锁的可以随便升级,如果你还不明白.那我简单点说,意思就是如果要升级..无锁可能只用几分钟.而有锁就要半个小时..很是折腾…

关键词:刷固件(有锁版慎重)

论坛里很多朋友都是*次用IPHONE.不知道拿到IPHONE后如何升级固件.我来说下基本步骤  下载要升级的固件-打开ITUNES按住shift鼠标点恢复-选取固件-激活(连接ITUNES按提示操作)    有锁版的一定要控制好自己的手,不要随便按更新和恢复。

关键词:越狱

港版的可以不越狱(但你就得忍受软件收费制).但美版一定要越.  越狱有什么好处.?这是大家会问的.越狱后,你就可以下载免费软件…就可以随心所欲.当然.一部分人用无锁的会不考虑越狱.这属个人喜好,不予讨论.越狱的前提是刷了固件..另外有些朋友不清楚自己是否越狱…*简单的方法..安装91手机助手.看能不能识别IPHONE.提示!!!!越狱后的机器不可以按恢复原厂设置。。

关键词:越狱.激活

很多朋友会把这两个名词混为一谈.我来作下解释..激活,是指激活IPHONE.使IPHONE可以使用SIM卡.越狱.是为了安装免费游戏软件所要做的…

关键词:91手机助手.ITUNES.

很多朋友也会混淆这两个.会问安装哪个好..如果你是新手的话.我建议你两个都安装,不过91手机助手需越狱才可以使用..重要提醒!!!!!!!ITUNES连接IPHONE后.请取消  自动同步.  不然你会发现一连接就少很多东西的.

关键词:配件.

买了这么好的IPHONE.大家肯定会买点配件来保护它.现在我来以过来人的身份推荐几款. ARM的膜.solo的保护套.  严重提醒!!!!别买磨砂膜.防指纹膜.它会使屏幕不清晰.  还有AJ的壳.也千万别买…又贵又差..

关键词:装机必备.

IPHONE拿到了.?迫不及待想装点东西了吧.?在这里给你推荐几款.  蓝牙 QQ 进程管理 关机助手  来电秀 飞信  熊猫防火q1ang 专业万年历 金山词霸 cycorder  UC浏览器

关键词:省电诀窍.

有些朋友会发现电用的飞快.有时待机一个晚上电就没了.其实是你开了没必要而又费电的东西  设置-WIFI-关闭  设置-邮件-获取新数据-关闭  设置-通用-定位服务-关闭  设置-通用-蓝牙-关闭  设置-亮度-自动亮度调节-关闭  另外 每个月至少保证一次电循环  电循环:指把手机电用到自动关机.再连续冲6-8个小时..另外很多朋友会问刚买回来的IPHONE*次充电要充多久,这里再重申一遍:充满就行。充多了对IPHONE电池有害。

关键词:显歌词.

一些朋友喜欢边听歌边看歌词..在这里介绍个软件:青苹果  可以从里面下歌.然后传入ITUNES.再传入IPHONE.

关键词:白苹果.8。24更新

白苹果,是用IPHONE的*忌讳的一个名词了。。呵呵。 白苹果的意思就是开机时停在白苹果界面无法进入。属于软件冲突造成手机无法正常使用,一般解决方法就是用91手机助手里的工具看能不能修复。不能就只有刷机了。

关键词:2G。3G。4G。8G。16G.

很多新手会把这几个数字混淆。。这里来做个解释。2G和3G分别代表IPHONE的版本2G为我们常说的一代。3G呢就是2代。。当然不能依次类推说3代就是4G。?呵呵。3代叫3GS。。关于4G。8G16G。为IPHONE的容量。目前1代有的是4G和8G。2代有的就是8G和16G。。注意!!!有些朋友说自己买的IPHONE只有内存只有2G。。那不好意思。恭喜了。买到山寨了。

关键词:购买IPHONE渠道。.

有些新手准备买IPHONE。但是又不知道什么途径买*便宜,这里给您推荐下。如果你不嫌时间久。可以选择官网买。用信用卡刷,因为这是目前*便宜的途径,如果买现货,都会贵上几百上千。IPHONE香港官网:www.apple.com/hk。

关键词:上网.8。25更新。

今天发现一个新问题。很多IPHONE新手不知道如何上网,这里告诉下,设置-通用-网络-蜂窝数据网APN填cmnet  其他不填, 又有新问题来了。很多人又会问,怎么开通了GPRS还收了流量的钱。就像这个帖http://forum.iphone.com.cn/showtopic-1250.aspx    这里再次作下解释。因为有些人开通的GPRS只包含cmwap。而IPHONE一般是cmnet上网的,自然会收钱。。有人会问那就没办法了吗。有。。肯定有拉。有你们伟大的版主在,有什么问题不能解决,?呵呵。开个玩笑。我发了破解cmwap的压缩文件在下面,有兴趣的去下载吧。

关键词:IPHONE的所有配件。.

今天又看到一个帖子说自己的数据线坏了,想买条,呵呵,这里告诉大家,IPHONE里所有配件都是很贵的,丢了或坏了都是买不到正品的,网上那些全是国内生产的货色,IPHONE原装耳机大概是220RMB。 数据线180RMB,充电器300。在这里请大家爱惜自己的原装配件。。。!!

关键词:IPHONE邮件推送功能。.8。26更新

有些朋友会发现可以打出电话,但别人打过来却是 你拨打的电话暂时无法接通。是因为你开了邮件推送功能,如果你不信你现在可以把推送打开然后打电话。。解决的办法就是把推送关闭或者改为手动。

关键词:ITUNES帐号注册.

我前面说到ITUNES里有付费软件下载。当然也有免费。具体的方法我现在发上,

1.首先确定你的电脑中安装了iTunes,8.0以上版本,我不知道其他版本可不可以,本人是V8.0。打开iTunes,单击iTunes Store出现未登录的主页,拉到*后,“My Store:”选择“China”,再选择“TOP FREE APPS”下的任意一个APPS,我点的是WebMessenger,其他的都一样。

2.然后点击“GET APP”

3.再选择“创建新帐户”

4.出现“欢迎光临iTunes 商店”,点击“Continue”后继续,

4.出现“iTunes Store Terms 使用条款”的欢迎界面,先看条款,同意后选择“我已经阅读并同意此条款”,不同意选择“Cancel”,当然你一定要同意,要不写这文章还有什么用呢?后点击,再点击“Continue”继续

6.之后出现“Create iTunes Store Account(Apple ID)”,填写你的邮件地址,你的密码,重复你的密码,安全问题,回答安全问题,你的生日等,但是不能有中文,完了后选择“Continue”

7.出现“Provide a Payment Method”页面。注意:“Payment Method”选择“NONE”,这样才能免费下载APP程序及其他的资料。还要注意,填写账号信息时,不能有中文字符。
Surname 和 First Name  这2项随意填,只要任意英文字母就可以了
Address(地址):填写任意数字 空格 再任意英文字母 如:888 jiikj
city(城市): beijin    你也可以写 shanghai
Postcode(邮政编码): 100032  这个也可随意 如:100011 只要是6位数字就行
Province(省份): 城市那里填写了beijin ,此处可以怱略不填
Phone(电话): 前面写 010 后面填写任意7位数字  如:1234567
大家可以看到,“Country”一行,出现“China”,接着点击“Continue”

8.出现了“Verify You Account”画面,表示已经注册OK了,点击“DONE”

9.OK,现在打开你注册时的邮箱,你已经收到由“iTunes Store (<A href=”http://forum.iphone.com.cn/[email protected]”>

)”发来的主旨为“iTunes Store Account Verification‏”的邮件了,点击中间的链接激活你的帐号。

10.点击之后,你或许看到了下面的画面,不用怕,直接点击“确定”

11.这时你就可以看到iTunes出现了登录窗口,填上你刚注册的邮箱地址及你的密码,点击“Sign in”

12.Now,恭喜你注册并激活了你的帐号,出现了“Congratulations”窗口,点击“DONE”

13.*后是登录后的画面,可以尽情的下载你所需的东东吧。呵呵。

关键词:彩信《移动》.

还是有很多人不会弄彩信。设置分为两步,如下:
*,设置…通用…网络…蜂窝数据网
蜂窝数据
APN:cmnet
用户名:
密码:

彩信
APN:cmwap
用户名:
密码:
MMSC: http://mmsc.monternet.com
彩信DaiLi:10.0.0.172
彩信的*大信息容量: 50000
彩信用户DaiLi档案 URL:
第二,设置…电话…本机号码
输入本SIM卡的手机号码就OK.,! 只适用于IPHONE3。0固件或以上,另外说明下,本机拍的照片是无法发送的,因为文件太大。必须要先截屏,然后用截屏得到的图片发。

关键词:*

很多人都还不知道*是用来干嘛的,其实。设置了*就可以看YOUTUBE了,具体的方法看下
首先登录http://www.itshidden.com/

之后选择左面的

然后后点击页面中间的FREE!
接下来
在*行输入一个名字
第二行输入登录账号
第三行输入一个能用的邮箱
第四行第五行输入相同的密码
然后选择I accept the terms and condition.然后点击Register
OK,注册好了。

之后在iphone-通用-网络-*-添加*配置,选PPTP

关键词:CYDIA使用攻略

1、使用Cydia必须要有WIFI无线网络或者Gprs支持才可以,所以首先得让Iphone连上WIFI,首先为保证我们在使用Cydia软件时不会中途锁屏,我们先进入设置-通用-自动锁定-选永不,再我们进入设置-WIFI-开启无线功能并在选取网络下面选定一个无线网络如果有加密还需要输入密码,正确的话应该左上角会有一个扇形的无线图标,可以按旁边的向右蓝色箭头进入查看IP地址等设置,如果你发现连不上网络可以用这里的信息和电脑上的本地连接对比一下,正确的话应该就IP地址末位不同,别的都一样,如需要更改请点击静态。

2、设置好后回到桌面点击Cydia这个软件进入下图界面,如果你是这天当中*次进入会自动刷新,请耐心等待。。。刷好源后会出现图下界面。

在Cydia界面顶部中:
“Reload”功能:可以重新加载Cydia初始页。
“About”功能:可以查看该软件的一些制作信息。

在Cydia界面底部中:
“Home”功能:首页

“Sections”功能:可以进入软件列表页,来安装第三方软件。

“Changes”功能:更新后的*新软件。如果你已安装过的软件出现更新,当你开启Cydia软件时,Update下将会出现该软件的更新信息。

“Manage”功能:“Packages”可以重装、卸载你通过Cydia安装过的第三方软件,
“Source”是对源的管理,你可以在此添加更多源,来获取更多的第三方软件。

“Search”功能:搜索功能。

3、点击进入“Section”软件安装界面后,你将会看到所有软件栏目页面,每个栏目下包含着一定数量的第三方软件。

Development:iPhone支持的可开发环境类软件。例如支持常见的PHP语言。

Dictionaries:词典类软件。这个栏目下里面有很多种类语言的词典,包括中英词典。

eBooks:电子书类软件。这里不仅包括ebook电子书软件,还包括了已经制作好的英文电子书小说,例如福尔摩斯探险记等。

Games :游戏类软件。
Health:健康类软件。

Localization:系统化程序类软件 。例如国人开发的iPhone系统中文输入法iCosta。

Misc :iFlashCards扩展的语言功能类软件。例如现在比较流行的GRE词汇等。

Multimedia:多媒体类软件。例如具有电子琴功能的BeatPhone。

Network :网络服务类软件。例如可以将iPhone变成服务器的Apacha,具备全球定位系统的GPS等。

Productivity:实用工具类软件。例如可以在iPhone上看电子书的Books,可以管理iPhone系统文件的MobileFinder等。

Sources:是使用Cydia必装的软件之一,安装好后就会在Cydia里出现所有的第三方软件程序了。

System:系统类软件。如果你要解锁iPhone的话,这个栏目下的BSD Subsystem和OpenSSH都是必装的软件哦。另外,WinterBoard也是必装的主题美化软件哦。

Themes(Apps):这个栏目主要是关于拨号以及短讯背景等的主题。

Themes(Battery):这个栏目主要是关于充电电池的个性主题。

Themes(Complete):这个栏目是关于完整的主题,什么都包括在里面了。

Themes(Keyboard):这个栏目主要是关于键盘的主题。

Themes(Lockscreen):这个栏目主要是关于锁屏时的主题。

Themes(Sound):这个栏目主要是关于更改系统声音。

Themes(Springboard):这个栏目主要是仅改变桌面图标的主题。

Themes(System):这个栏目主要是关于滑块、wifi标志等主题。

Themes(Vei):这个栏目主要是关于滑块、拨号以及短讯背景等的主题。

Toys:宠物类软件。

Tweaks:补丁程序。主要是针对每个固件版本所推出对应的补丁工具。

Utilities:大众类软件。

Cydia简介之软件安装篇

*步:点击Cydia这个软件进入下图界面,如果你是这天当中*次进入会自动刷新,请耐心等待。。。刷好源后会出现图下界面。

第二步:点页面底部的“Sections”选择要装的软件,以安装“Text Reader”为例。

①点击“textReader”进入界面,这里有对软件的一个简单说明,你可以点击“More information”查看软件的详细说明。全部都是英文,千万不要头痛啊!哈哈

②点击右上角的“INSTALL”进行安装,出现图3的界面。

③选择右上角的“Confirm”进行确认

④耐心等待他下载安装完成,安装好后,会有“Complete”的字样,在点击Return to Cydia返回cydia首页

Cydia使用教程之卸载篇

*步:
打开Cydia,选择Manage,然后选择Packages

第二步:选择你所需要卸载的软件,以卸载“text reader”为例,在Packages里面找到Text Reader,点击进入

第三步:选择“Copy Machine”后,点击右上角的“Modify”,出现下图界面,在这里说明一下,选择“Reinstall”即为重装软件;选择“Remove”为卸载软件;“Cancel”为取消此次操作。

第四步:选择Confirm,确认卸载,出现卸载进度图

第五步:出现Complete,在点击Return to Cydia返回cydia首页,完成卸载

Cydia简介之源地址添加篇

*步:打开Cydia进入主界面

第二步: 然后点击正方的Manage标签进入下图的Sources管理。

第三步:打开后点击右上角的Edit,然后在稍后出现的窗口中点击Add,在弹出的标签中增加源地址:

第四步:完成后点击Add Source,这时Cydia会自动更新一些文件。耐心等待一小会儿,大功告成!*的字样出现在你的源列表里了。

第五步:使用时,点击想要安装的软件即可!安装参考安装篇!

关键词:魔鬼定律。

之1
忍无可忍买了砖头一样的外接电池之后才能发现,原来 iPhone 内置电池没有那么不耐用。
之2
*张贴膜一定会浪费掉。 喜欢光泽膜,你买的一定是磨砂的。恰巧买对了?没关系,你将会贴出气泡。
之3
你迟早被 iPhone 裸奔的手感征服。但不会早于你给他买壳之前。
之4
你装的*多的一类软件用的*少。嗯,我指的是游戏。
之5
买iPhone三个月之后,给你10秒钟,你数不清自己手机上有多少个软件可以发推。数清的同学可以挑战下一个级别:20秒内告诉我,有多少个软件可以发Email。
之6
一个热门应用,比如 Twitter 。 好消息是,App Store 上的软件囊括了所有你想要的功能。 坏消息是,这些你*心仪的功能,将非常均匀的分布于多个软件当中。
之7
PC上是一个应用,一个软件,一堆功能。 iPhone 上? 一个应用,一堆软件,每个软件一个功能。
之8
开了苹果的推送之后,迟早有一天,你会把低电量提示也看成短信,IM消息,或者推特的Mentions。

关于一些常见问题。

1,机器图标可以随意托动?

一直按住某个图标。桌面所有的图标就会抖动起来,你就可以拖动图标了到你想的位置了。

2,恢复时出现这样那样的错误,怎么办?

继续恢复,直到出现正解的恢复报告为止。唉,IPHONE就是这样,让我欢喜让我忧,这样那样的问题,让你百思不得其解。

原则上来讲,只要是硬件不出现问题(注意!如果你不懂什么叫硬件,请先用百度搜索关键字:硬件,做完相应的知识普及再往下看),没有任何修复不了的砖头。具体操作方法:如果机器在开机状态,关不了机的情况下,按HOME键(上次有一个朋友问我HOME键是什么键, 就是你手机上那个圆圆的,中间还有个四方形的那个键)+关机键=硬关机,然后开机的时候先按开机键,出现白苹果时,*时间按HOME键,出现了连接ITUNES的界面就成功进入恢复模式。这种关机法,是我用的*多的,因为我太爱拆腾IPHONE了,动不动就死机。当然,在这里也要说明一下,如果你很想玩转你的IPHONE,你必须得适应白苹果+死机。如果你只想把它当作一件艺术品,只用来打电话跟发短信,那么这个论坛对你来说也没有什么很大的意义了。

3,如何购买IPHONE?

看个人经济情况而定。有钱的话买港版,没钱买美版自己多研究也没问题。有人问港美的区别是什么。。就是你在论坛里求救的次数的多少。。呵呵,

如果你不在乎什么二手货,什么组装货,随便找个卖家交易吧,要相信苹果的实力,既使是二手货,苹果的质量是*对可以保证的!

4,GPRS上网明明按照论坛教程写的去做,怎么总是上不了?

这个我问过我移动公司的朋友(不是营业厅交话费的那种美女,是一个技术员),他告诉我,目前国内各地的网络参数设置不一样,导致有一些地方可以上,有一些地方不可以上,还有就是国内还有相当部分地区没有开通EGDE网络,,但只要有信号的地方,GPRS冲浪没有问题的。这点,我对政 府很满意,给他打9分,如果GPRS上网免费,无条件10分!

5,电池到底怎么样使用才算*佳?

现在都是锂电池时代了,我查过不少相关的内容,其实根本就不需要什么一定要前三次用完,再充满12个小时,纯属放屁!大家参考我的使用方法,手机刚买回来,应该是没电的(二手货不算),我觉得奇怪,以前买新手机的电池拿回来都有一点点电让我开机,算了,不管了,已经有兄弟提出来这种说法是个错误,我改改就是。接着说充电方法:充两个小时,只需两个小时,然后直接使用,想怎么爽就怎么爽!注意别爽过头,时刻注意查看一下电量,在出现警告的时候(界面显示你的电量不足20%),就该给机器充电了。

6,我的手机读不了SIM卡上的联络人,怎么样把它转到手机里面来?

有两个工具,但在我的手机上使用都失败了,不知道是我人品问题还是机器软件问题,我是自己重新编辑的,这个还希望各位新手不要怕麻烦,*稳定的办法就是:把经常联系的朋友、同事、家人……重新编辑一次,再PC套件导入手机,导入手机后立马做备份,这样一来就不怕救活白苹果后为电话表的事烦心了。其实这个问题很哆嗦,有的又说软件可以导入,有的又说不可以,反正我是这样弄的,重新编辑。

7,怎么样更改手机来电铃声?

论坛有专用的软件,我这里再教新手们一个很简单很实用很火星的方法,想必你买苹果的产品,一定知道ITUNES吧,直接用它转换成AAC格式(怎么转?自己去摸索),然后直接将转好的AAC格式文件名改名,点右键—更改文件名,把后面的.AAC改成.M4R,注意.M4R前面得加上一个空格,一定要加空格,否则你传上去的铃声机器不认了,别又跑到我这个贴时来骂我。这招我还是在菜泡饭那里学的,以前硬是百思不得其解,后来才知道有这么个规矩。

8,手机恢复后如何安装笔画输入?

笔画输入,推荐那个WE什么去了,,哦,叫WEFIT!对,就是这个,装*新版的,有梅花输入,以后打字可以一个手打了(顺便一次把问题说清,装好之后,要把机器重启一次才可以使用)。你如果又怕白苹果就安装老版本的吧。安装方法:下载PXL文件(用论坛搜索关键字:WEFIT就可以找到),用I B U S安装,这是个傻瓜式的安装第三方软件工具,我初中学历的人都会弄,你们不可能比我还差吧。另外还有一个叫ICOSTA的中文输入软件也不错,自己多搜搜就知道了。至于如何知道你是否安装成功,打开短信,编辑新短信,点123旁边一个类似地球的小图标,如果出现的中文就说明你安装成功了!

9,机器连接电脑ITUNES不认,何解喽?

有一个机友出现过这种情况,机器版本是114,可使用的ITUNES竟然是7.3,我服了他,不过知道他的日子怎么过的?后来有一天告诉我ITUNES竟然有外遇,不认IPHONE了,后来我建议他把ITUNES升级为7.6.1,终于,ITUNES回头是岸,跟自己的IPHONE重归于好。这只是个别现象,不保证你是7.6.1就一定会认你的IPHONE,不过大多数的情况各位新手还是尽量把ITUNES升到目前的7.6.1,如果实在不行,就把ITUNES删掉,重新安装一次,再不行,重装系统,再不行,换台电脑,再不行,换台IPHONE,再不行,上 吊!

10,机器买回来自己破解好还是商家破解好?

*好是自己破解,因为那种感觉太爽了。如果依赖思想太重,你会损失更多的银子,兄弟们,这年头,饭好吃,钱难赚啊~~~~~

11,在哪下载恢复固件跟相应的破解软件?

自己在论坛里找下吧。。呵呵。现在解锁软件有很多版本,新手们看自己的机器适合哪种自己就去论坛搜索哪种吧,不要盲目的说哪种好,哪种差,其实都一样,白猫黑猫,能抓到老鼠的猫都是好猫。

12,我的机器有时候开机会出现花屏,关机时有时候也会出现,硬件坏了吗?

我个人认为,这并不是个好现象,不排除硬件问题,软件方面*对存在一定的缺陷,机无完机么?我们要勇敢面对现实,既然这个问题已经出了,就要注意在机器使用方面做一些相关的维护,要知道,IPHONE只是一个很普通的电子产品,也是有寿命的。说它前卫,高科技化,只是相对的,不是*对的!例如不要在高温下频繁使用娱乐功能,不要超负荷量的播放视频……

13,花了几千块买回来的手机竟然不能用蓝牙传输文件?
想开点吧,兄弟,人家上万元的手机买回来,还没有WIFI呢 ,其实我自己到现在还没想通,乔老爷当时为什么要这样搞?很期待新固件能解决这一问题,我很放心,因为苹果给我带来的惊喜实在是太多了,苹果的策略也相当成功,动不动就给你来个更新,让你手上的宝贝永远*于其它产品。怪不得APPLE的FANS永远都这么支持它!说到这里你去看看其它的产品,不是停产了,就是换汤不换药的产品出来了,说到这里,三星就是*好的例子,机海战术发挥的淋离尽致。(三星的FANS没喷我啊,地球人公认的我才这么说)  现在可以通过91下载蓝牙。。

15,TTY是什么意思?
一种提供给听力不便的人的文本电话方式(这个回答基本上正解的,如有不同意见,请在此贴回复,我只要得到正确信息,立马更正)。

16,什么叫WIFI?WIFI上网收费吗?
其实这种问题我不觉得算火星问题,我敢打赌*对还有相当部分老手都对其不是很了解,刚才发现有部分新手对WIFI的定义不清楚。我找了个链接,新手+老手有兴趣的可以了解一下。[为防止上面这个链接失效,我复制了一些基本的介绍,大伙随意看看吧。
WIFI全称Wireless Fidelity,又称802.11b标准,它的*大优点就是传输速度较高,可以达到11Mbps,另外它的有效距离也很长,同时也与已有的各种802.11 DSSS设备兼容。今夏*流行的笔记本电脑技术——迅驰技术就是基于该标准的。

Wi-Fi WirelessFidelity,无线保真 技术与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的是2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。该技术由于有着自身的优点,因此受到厂商的青睐。

收费问题嘛,很合理的,我们现在使用的都是免费的,但不保证将来世界科技发展火速进步,人类自身素质大大提高,经济条件越来越好,收费也是说不定的,嘿嘿。管它呢,只要现在过的好,将来的事将来再说,也许将来移动电话都会被淘汰,未来的世界是什么样子的

17,又发现火星问题,手机进行升级时点恢复还是更新?
相信*大多数新手都是从其它智能手机阵营中转到这里来的,IPHONE很智能,很聪明,但新手们也一定怕把机器刷死,点恢复吧(我从来没点过更新,不知道自己算不算火星 ),下载相关的固件(也就是手机软件,大小都在150—160M左右,这里就四舍五入的说明了一下,不能精确到100%),手机成功进入恢复模式连接ITUNES后会提示你的,这个时候按住Shift别松开(不知道什么是Shift吗?本人已证实确实有机友连电脑的Shift键是什么都不知道,够火星吧 ,就是你键盘上*左边从下往上数的第二个键,注意顺序,从下往上),然后再点ITUNES界面里面的恢复,接下来你如果还是不知道怎么办,花点银子,找JS手杷手教你一次吧。

18,到底是2007年的屏幕好还是2008年的屏幕好?
一个比较有争议性的话题,我客观的评价一下,只要屏幕的本身没问题(例如出现死点、坏点等),其它的问题都不是问题(什么色彩不行啊,偏红,偏黄),一句话:自己的永远是*好的!打个比较傻的比方,如果你的儿子生出来没有你长的帅,你会不会不要这个儿子了。 在中 国这么有情有义的环境中,这样的话题讨论来讨论去,我个人觉得没必要的。

19,如何查看机器的出产日期
先说说我自己的机器吧,查看手机的背面,底下有一排很精细的英文(IPHONE的做工就是这么叼,连这些微处理都是这么完美):Serial No:82751K1DWH8,注意第三个数字7,代表2007年,51则代表51周。人家问我机器是什么时候生产的,我就回答是2007年51周的产品。顺便自己火星一下,有没有哪位同学能告诉我其它的代表什么 ?一直没关注这些,既然今天提到了这个问题,还是了解一下吧,学无止境!

20,IPHONE上可以直接删除哪些文件?(注意,是指在手机上操作,非PC端工具)
我真的很无奈,手机上你上传的音乐(不包括视频,视频可以删的)、图片(有朋友说相机拍出来的照片可以删,我从来没用IPHONE照过相,新手们可以试试)都不能直接在手机上删除,另外如果要删除通话记录,安装一款名叫WE什么去了的软件?是个什么名字我先检查一下,不敢随便误导新人,对!就叫WETOOL!目前的3.9版本个性化超赞,相信该作者会坚持“没有*好,只有更好”的原则,陆陆续续给我们带来更多的惊喜~~ 如果你要删掉什么第三方软件,我把菜泡饭(一名机友)对我说的原话放上来:你用什么工具装,就用什么工具删(例如你是用PC套件上传APP包的,就用PC套件把相应的APP包删掉重启即可,用Installer装的,就用Installer去删,用IB装的就用IB去删,呵呵,说的虽然哆嗦了点,但什么东西我们尽量还是求个十全十美吧)。友情提示:你用PC套件查看系统里面别的文件夹时,在你不是很会玩转机器的情况下,还是不要轻易乱删、乱换相关的系统文件,用我自己的话说:不怕白苹果,可怕的是恢复之后的IPHONE重新安装软件那种感觉,太难受了~~
据机友反应,补充一下:自己拍的照片能删除的,上传的图片也不是不能删,就看你上传到哪个位置的,如果放到胶卷(就是拍照片的那个目录下),是可以删的,但如果自己新建的文件夹,就只有用第三方软件删除了.

21,论坛好多高手都提供新软件,可大多数需要Installer来安装,还说什么添加源,这个源怎么添加啊?
我本人是买了无线路由器才开始学这个的,一开始也不知道呢。环境:确定你有一个WIFI无线连接,并可以正常连接使用。具体操作方法:在手机设置里面找到WIFI,将其连接上,按HOME键退出,进入Installer,慢慢等,因为需要更新,更新的时候视个人的网速而定。更新完了之后看到下面的五个图标了吗?点击*右边那个Sources(样子长得有点像小地球),进入界面后再点击右上角的Edit,再点左上角的Add。这个时候界面会出现一个新的窗口,输入你想要添加的源(是一个网址),按OK,慢慢等,刷新完了之后,这个源你就成功的添加了。*后进左下角第二个图标(Install),去找你刚才添加的源。

22,几个有用的小技巧
锁屏状态下,按2下HOME键,可以出来IPOD的界面,听歌的时候不用再去开锁换歌了。。
锁屏状态下,来电话时,按2下开关键可以挂断,按1下可以静音。。
还有一个自带耳机的功能,右耳机下面的一段通话的可以按,按一下接听电话什么的,按2下可以换歌。实在是方便,可惜它的音质实在不赶恭维。

24,我的电量会跑?严重的情况下甚至会飞?
睡觉前电量显示大约还有四分之三,早上起来一看,自动关机了,手机开不了机,难道它选择了自生自灭?这种情况在我身上已出现过两次了,吓死我了!初步断定,晚上睡觉时忘记关闭WIFI,还有一个很重点的地方,忘记锁屏!新手们对这个问题一定要给予重视。(若有新发现,请在此贴进行跟贴,便于我及时更新,谢谢各位!)

25,明明买的是8G版的IPHONE,怎么可用空间不足8G?惨了,买到了组装货???
很正常的,你去买[个512M的U盘,可用空间也不会给你512M,8G新买的,可用空间大约在7.3G左右(不能精确到100%)。以此类推,16G的可用空间也自然不会给你16G,至于是多少,还是请拥有16G的同学自己查看吧~~其实不足8G是因为 我们平时的从KB换算到MB 都是按照1024进行计算的也就是2的10次方 源于2进制算法 1M=1024KB 厂家的算法而是将1024 去零留整 直接保留了1000进制 也就是1000KB=1MB 而微软的计算方法是严格按照1024计算的 这样我们计算下来 8G就小于实际标注了 呵呵 。

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速