ios学习笔记

iOS和iPad各app图标和启动页尺寸

iphone APP图标尺寸:57X57    高清:114X114  单位:pixel   命名:无特殊要求,最好是,app_icon  高清的要加@2x

iphone 启动页尺寸:大小最好是320X460或320X480(相当于整个屏幕尺寸) 单位:pixel 命名:Default.png 

iPad APP图标尺寸:72X72 高清:144X144  单位:pixel 命名:

ipad 启动页尺寸:大小最好是768X1004或768X1024  单位:pixel 命名:Default-Portrait~ipad.png   高清:Default-Portrait@2x~ipad.png


如何代码实现跳转safari,phone或message?

在相应的代码中写入:

1、调用 电话phone

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];

2、调用自带 浏览器 safari

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];

3、调用 自带mail

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];

4、调用 SMS

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

5,跳转到系统设置相关界面

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];


其中,发短信,发Email的功能只能填写要发送的地址或号码,无法初始化发送内容,如果想实现内容的话,还需要更复杂一些,实现其各自的委托方法。

若需要传递内容可以做如下操作:

加入:MessageUI.framework

 

#import <MessageUI/MFMessageComposeViewController.h>

 

实现代理:MFMessageComposeViewControllerDelegate


  1. 调用sendSMS函数  
  2. //内容,收件人列表  
  3. - (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients  
  4. {  
  5.    
  6.     MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];  
  7.    
  8.     if([MFMessageComposeViewController canSendText])  
  9.    
  10.     {  
  11.    
  12.         controller.body = bodyOfMessage;     
  13.    
  14.         controller.recipients = recipients;  
  15.    
  16.         controller.messageComposeDelegate = self;  
  17.    
  18.         [self presentModalViewController:controller animated:YES];  
  19.    
  20.     }     
  21.    
  22. }  
  23.    
  24. // 处理发送完的响应结果  
  25. - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result  
  26. {  
  27.   [self dismissModalViewControllerAnimated:YES];  
  28.    
  29.   if (result == MessageComposeResultCancelled)  
  30.     NSLog(@"Message cancelled")  
  31.   else if (result == MessageComposeResultSent)  
  32.     NSLog(@"Message sent")    
  33.   else   
  34.     NSLog(@"Message failed")    
  35. }  
  36.    
  37.    
  38. 发送邮件的为:  
  39. 导入#import <MessageUI/MFMailComposeViewController.h>  
  40. 实现代理:MFMailComposeViewControllerDelegate  
  41.    
  42. //发送邮件  
  43. -(void)sendMail:(NSString *)subject content:(NSString *)content{  
  44.    
  45.     MFMailComposeViewController *controller = [[[MFMailComposeViewController alloc] init] autorelease];  
  46.    
  47.     if([MFMailComposeViewController canSendMail])  
  48.    
  49.     {  
  50.    
  51.         [controller setSubject:subject];  
  52.    
  53.         [controller setMessageBody:content isHTML:NO];  
  54.    
  55.         controller.mailComposeDelegate = self;  
  56.    
  57.         [self presentModalViewController:controller animated:YES];  
  58.    
  59.     }      
  60. }  
  61.    
  62. //邮件完成处理  
  63. -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{  
  64.    
  65.     [self dismissModalViewControllerAnimated:YES];  
  66.    
  67.     if (result == MessageComposeResultCancelled)  
  68.         NSLog(@"Message cancelled");  
  69.     else if (result == MessageComposeResultSent)  
  70.         NSLog(@"Message sent");   
  71.     else   
  72.         NSLog(@"Message failed");    
  73.    
  74. }  
  75.    
  76. 默认发送短信的界面为英文的,解决办法为:在.xib 中的Localization添加一組chinese 



程序中获取软件的版本号和app名称

  1. 应用程序的名称和版本号等信息都保存在mainBundle的infoDictionary字典中,用下面代码可以取出来。  
  2. NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];  
  3. NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];//版本名称  
  4. NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"];//app名称  

如何获取手机硬件信息?

通过使用UIDevice: 


[[UIDevice currentDevice] systemName];

[[UIDevice currentDevice] systemVersion];//os version

[[UIDevice currentDevice] uniqueIdentifier];

[[UIDevice currentDevice] model];

[[UIDevice currentDevice] name];

真机上结果:

System Name: iPhone OS

System Version: 4.2.1

Unique ID: 9b5ded78d5fa0ac96250f8b4af0e46f40b96ea6d

Model: iPhone

Name: “wwk”的 iPhone

模拟器上结果:

System Name: iPhone OS

System Version: 4.2

Unique ID: 21FFE0FF-429B-5D0B-96D2-EADCA3203260

Model: iPhone Simulator

Name: iPhone Simulator

uniqueIdentifier:iPhone通过,向几个硬件标识符和设备序列号应用内部散列算法,而生成这一标识符。

http://blog.csdn.net/qiwancong/article/details/7914923 参考



,如何启动app时全屏显示Default.png(图片)?

大部分app在启动过程中全屏显示一张背景图片,比如新浪微博会显示这张:



想在iOS中实现这种效果,毫无压力,非常地简单,把需要全屏显示的图片命名为Default.png即,在iOS app启动时默认会去加载并全屏显示Default.png

也可以用其他名称来命名图片,在Info.plist配置一下即可:



配置过后,app启动时就会去加载并全屏显示lufy.png

在默认情况下,app显示Default.png时并非真正的"全屏显示",因为顶部的状态栏并没有被隐藏,比如下面的效果:



大部分情况下,我们都想隐藏状态栏,让Default.png真正全屏显示。

说到这里,可能有人马上就想到了一种办法:在AppDelegate的application:didFinishLaunchingWithOptions:方法中添加如下代码:

[UIApplication sharedApplication].statusBarHidden = YES; 

我只能说你的思路是对的,但实际上达不到想要的效果,你会发现显示Default.png时状态栏还是存在的,等Default.png显示完毕后,状态栏才被隐藏。

先解释下为什么这种方法不可行,其实原因很简单:

1> Default.png是在app启动过程中加载的,并不是在app启动完毕后再加载的

2> AppDelegate的application:didFinishLaunchingWithOptions:方法是在app启动完毕后才调用的

下面说一下解决方案,在Info.plist中增加一个配置即可:



这里的YES表示在app初始化(启动)的时候就隐藏状态栏。

当然,在Default.png显示完毕后状态栏还是隐藏的。如果想重新显示状态栏,补上下面代码即可:

[UIApplication sharedApplication].statusBarHidden = NO; 



UITextField只有当有字符输入后,键盘右下角的搜索/返回/done/等等键才可以使用


TextField设置这个属性为YES就可以了,默认为NO

searchField.enablesReturnKeyAutomatically =YES;



UITableView中有多个UITextField时,被挡住的TextField如何实现自动向上弹起?

首先要实现TextField的delegate,在方法:

  1. - (void)textFieldDidBeginEditing:(UITextField *)textField {  
  2.     [self.tableView setContentOffset:CGPointMake(0, 70) animated:YES];  
  3.     
  4. }  


这说明当开始输入时,tableview在原来的基础上向上抬起70个距离。多个UITextFiled可以通过判断来使用CGPoint的调整高度,我这写的是70.

tableview的scrollEnabled属性一定要是YES;要不然滚动不了了。

记得在return时复原tableview的位置:

  1. - (BOOL)textFieldShouldReturn:(UITextField *)sender {  
  2.     [self.tableView setContentOffset:CGPointMake(0, 0) animated:YES];  
  3.     return YES;  
  4. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值