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通过,向几个硬件标识符和设备序列号应用内部散列算法,而生成这一标识符。
参考
,如何启动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. }