IOS中常用的知识总结(二)

Wesley13
• 阅读 722
16、程序启动画面大小
 
 iOS设备现在有三种不同的分辨率:iPhone 320x480、iPhone 4 640x960、iPad 768x1024。以前程序的启动画面(图片)只要准备一个 Default.png 就可以了,但是现在变得复杂多了。下面就是 CocoaChina 会员做得总结
 
  如果一个程序,既支持iPhone又支持iPad,那么它需要包含下面几个图片:
 
Default-Portrait.png iPad专用竖向启动画面 768x1024或者768x1004
 
Default-Landscape.png iPad专用横向启动画面 1024x768或者1024x748
 
Default-PortraitUpsideDown.png iPad专用竖向启动画面(Home按钮在屏幕上面),可省略 768x1024或者768x1004
 
Default-LandscapeLeft.png iPad专用横向启动画面,可省略 1024x768或者1024x748
 
Default-LandscapeRight.png iPad专用横向启动画面,可省略 1024x768或者1024x748
 
Default.png iPhone默认启动图片,如果没有提供上面几个iPad专用启动图片,则在iPad上运行时也使用Default.png(不推荐) 320x480或者320x460
 
Default@2x.png iPhone4启动图片640x960或者640x920
 
  为了在iPad上使用上述的启动画面,你还需要在info.plist中加入key: UISupportedInterfaceOrientations。同时,加入值UIInterfaceOrientationPortrait, UIInterfacOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight
 
17、ASIHTTPRequest实现断点下载
 
- (IBAction)URLFetchWithProgress:(id)sender
 
{
 
[startButton setTitle:@"Stop" forState:UIControlStateNormal];
 
[startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
 
NSString*tempFile = [[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.download"];
 
if ([[NSFileManager defaultManager] fileExistsAtPath:tempFile]) {
 
[[NSFileManager defaultManager] removeItemAtPath:tempFile error:nil];
 
}
 
[self resumeURLFetchWithProgress:self];
 
}
 
- (IBAction)stopURLFetchWithProgress:(id)sender
 
{
 
networkQueue = [[ASINetworkQueue alloc] init];
 
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:selfselector:@selector(updateBandwidthUsageIndicator) userInfo:nil repeats:YES];
 
timer = nil;
 
[startButton setTitle:@"Stop" forState:UIControlStateNormal];
 
[startButton addTarget:self action:@selector(URLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
 
[networkQueue cancelAllOperations];
 
[resumeButton setEnabled:YES];
 
}
 
- (IBAction)resumeURLFetchWithProgress:(id)sender 
 
{
 
[resumeButton setEnabled:NO];
 
[startButton setTitle:@"Start" forState:UIControlStateNormal];
 
 [startButton addTarget:self action:@selector(stopURLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
 
[networkQueue cancelAllOperations];
 
[networkQueue setShowAccurateProgress:YES];
 
[networkQueue setDownloadProgressDelegate:progressIndicator];
 
[networkQueue setDelegate:self];
 
[networkQueue setRequestDidFinishSelector:@selector(URLFetchWithProgressComplete:)];
 
ASIHTTPRequest*request=[[[ASIHTTPRequest alloc] initWithURL:[NSURLURLWithString:@"http://9991.net/blog/mp3/2.mp3"]] autorelease];
 
[request setDownloadDestinationPath:[[[[NSBundle mainBundle] bundlePath]
 
stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.mp3"]];
 
[request setTemporaryFileDownloadPath:[[[[NSBundle mainBundle] bundlePath]stringByDeletingLastPathComponent]stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.down"]];
 
[request setAllowResumeForFileDownloads:YES];
 
[networkQueue addOperation:request];
 
[networkQueue go];
 
}
 
- (void)URLFetchWithProgressComplete:(ASIHTTPRequest *)request
 
{
 
if ([request error]) {
 
fileLocation.text=[NSString stringWithFormat:@"An error occurred:%@",[[[requesterror] userInfo] objectForKey:@"Title"]];
 
} else {
 
fileLocation.text=[NSString stringWithFormat:@"File downloaded to %@",[requestdownloadDestinationPath]];
 
}
 
[startButton setTitle:@"Start" forState:UIControlStateNormal];
 
[startButton addTarget:self action:@selector(URLFetchWithProgress:)forControlEvents:UIControlEventTouchUpInside];
 
}
 
- (IBAction)throttleBandwidth:(id)sender
 
{
 
if ([(UIButton *)sender state] ==YES) {
 
[ASIHTTPRequest setMaxBandwidthPerSecond:ASIWWANBandwidthThrottleAmount];
 
} else {
 
[ASIHTTPRequest setMaxBandwidthPerSecond:];
 
}
 
}
 
18、Safari 启动本地app
 
在plist文件中加入URL types 结构如下图,在Safari中地址栏输入 设置的字符串,比如设置的是
 
QQ,地址栏输入 QQ:// 就可以起点本地应用。
 
  
 
 
19、拖到视频进度与滑动手势冲突解决办法
 
#pragma mark -
#pragma mark UIGestureRecognizerDelegate
 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    UIView *touchView = touch.view;
     
    if ([touchView isKindOfClass:[UISlider class]]) 
    {
        return NO;
    }
    else
    {
        return YES;
    }
}
 
20、创建并保存Cookie的方法
 
 
        NSString *cookieString = [NSString stringWithString:[headers objectForKey:@"Cookie"]];
         
        NSMutableDictionary *cookieProperties = [[NSMutableDictionary alloc] init];
        [cookieProperties setValue:cookieString forKey:NSHTTPCookieValue];
        [cookieProperties setValue:@"QQCookie" forKey:NSHTTPCookieName];
        [cookieProperties setValue:@".QQ.com" forKey:NSHTTPCookieDomain];
        [cookieProperties setValue:[NSDate dateWithTimeIntervalSinceNow:60*60] forKey:NSHTTPCookieExpires];
        [cookieProperties setValue:@"/" forKey:NSHTTPCookiePath];
        NSHTTPCookie *newcookie = [[NSHTTPCookie alloc] initWithProperties:cookieProperties];
         
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:newcookie];
 
 
21、popover横竖屏位置改变解决办法
 
1、 delegate中 处理
 
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    userImageShow = NO;
     
    if ([popoverController isEqual:myPopover]) 
    {
        [myPopover release];
        myPopover = nil;
    }
}
 
2、屏幕旋转时重新弹出Popover
 
if (myPopover)  
 
{
 
     if ((self.interfaceOrientation == 
       UIInterfaceOrientationLandscapeLeft) || (self.interfaceOrientation == 
       UIInterfaceOrientationLandscapeRight)) 
     {
            [myPopover presentPopoverFromRect:CGRectMake(10,180, 1, 1)
                                                inView:self.view
                              permittedArrowDirections:UIPopoverArrowDirectionRight
                                              animated:YES];
     }
     else
     {
           [myPopover presentPopoverFromRect:CGRectMake(20,180, 1, 1)
                                                inView:self.view
                              permittedArrowDirections:UIPopoverArrowDirectionRight
                                              animated:YES];
      }
 
}
 
22、plist各种key值含义
 
原文:http://www.minroad.com/?p=434
 
 
 
UIRequiresPersistentWiFi 在程序中弹出wifi选择的key(系统设置中需要将wifi提示打开)
UIAppFonts 内嵌字体(http://www.minroad.com/?p=412 有详细介绍)
UIApplicationExitsOnSuspend 程序是否在后台运行,自己在进入后台的时候exit(0)是很傻的办法
UIBackgroundModes 后台运行时的服务,具体看iOS4的后台介绍
UIDeviceFamily array类型(1为iPhone和iPod touch设备,2为iPad)
UIFileSharingEnabled 开启itunes共享document文件夹
UILaunchImageFile 相当于Default.png(更名而已)
UIPrerenderedIcon icon上是否有高光
UIRequiredDeviceCapabilities 设备需要的功能(具体点击这里查看)
UIStatusBarHidden 状态栏隐藏(和程序内的区别是在于显示Default.png已经生效)
UIStatusBarStyle 状态栏类型
UIViewEdgeAntialiasing 是否开启抗锯齿
CFBundleDisplayName app显示名
CFBundleIconFile、CFBundleIconFiles 图标
CFBundleName 与CFBundleDisplayName的区别在于这个是短名,16字符之内
CFBundleVersion 版本
CFBundleURLTypes 自定义url,用于利用url弹回程序
CFBundleLocalizations 本地资源的本地化语言,用于itunes页面左下角显示本地话语种
CFBundleDevelopmentRegion 也是本地化相关,如果用户所在地没有相应的语言资源,则用这个key的value来作为默认
最后附上官方文档,所有的key都有,看英文原版才是正路:)点我进入
点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
10个必需的iOS开发工具和资源
转自:http://coolshell.cn/articles/5089.html界面总不是一件很容易事,尤其是iPhone/iPad的界面,做过iOS开发的程序员,一定会感到开发iPhone/iPad的界面是一件多么不容易的事。下面的文章来自10EssentialiOSDeveloperTools&Resources(https://w
子桓 子桓
1年前
Aiseesoft iPhone Unlocker mac Aiseesoft iPhone Unlocker 中文
AiseesoftiPhoneUnlocker一款功能强大、易于操作、安全可靠的iOS设备解锁工具,为用户提供了一个方便快捷的解决方案。iPhone屏幕锁定?立即擦除iPhone密码为iPhone创建密码可以保护您的隐私。但是,您无法控制锁屏密码的原因有很
燕青 燕青
1年前
iOS数据恢复工具:PhoneRescue for Mac中文版
是一款终极的iOS数据恢复程序,设计用于在iPhone、iPad和iPodtouch上检索丢失的数据,包括照片、消息、联系人、便笺等,同时也可以从任何iOS崩溃错误修复iDevice。这款软件可以恢复设备上丢失的数据,包括从设备、iTunes备份和iClo
燕青 燕青
1年前
HTTP协议抓包工具:Charles for Mac
是一款终极的iOS数据恢复程序,设计用于在iPhone、iPad和iPodtouch上检索丢失的数据,包括照片、消息、联系人、便笺等,同时也可以从任何iOS崩溃错误修复iDevice。这款软件可以恢复设备上丢失的数据,包括从设备、iTunes备份和iClo
燕青 燕青
1年前
邮件管理工具:Outlook LTSC 2021 for Mac中文版
是一款终极的iOS数据恢复程序,设计用于在iPhone、iPad和iPodtouch上检索丢失的数据,包括照片、消息、联系人、便笺等,同时也可以从任何iOS崩溃错误修复iDevice。这款软件可以恢复设备上丢失的数据,包括从设备、iTunes备份和iClo
燕青 燕青
1年前
AI智能视频清晰处理工具:Perfectly Clear Video for Mac
是一款终极的iOS数据恢复程序,设计用于在iPhone、iPad和iPodtouch上检索丢失的数据,包括照片、消息、联系人、便笺等,同时也可以从任何iOS崩溃错误修复iDevice。这款软件可以恢复设备上丢失的数据,包括从设备、iTunes备份和iClo
铁扇公主 铁扇公主
1年前
ios数据恢复软件:Aiseesoft Mac FoneLab 激活中文版
AiseesoftMacFoneLab是一款专业的iOS设备数据恢复软件,适用于MacBook、iMac和其他运行macOS操作系统的Mac设备。它可以帮助用户恢复因各种原因丢失的iOS设备(包括iPhone、iPad和iPodTouch)上的数据,例如短
凿壁偷光 凿壁偷光
1年前
苹果ios解锁工具-FoneDog iOS Unlocker for Mac
FonePawiOSUnlocker是一款优秀实用的苹果ios解锁工具,适用于苹果公司旗下多种型号的iPhone、iPad以及iPodTouch设备和最新的IOS系统版本号,内置ios屏幕解锁软件(TouchID/FaceID)、iCloudID(密码忘记或账户充值以及无法关闭【寻找我的IPhone】的情况)、屏幕时间密码忘记或取消苹果手机屏幕时间限制三种ios解锁功能,搭配iTunes就可以帮助广大苹果用户简单三步即可绕过屏幕锁定和iCloudID等相关问题,可谓是不折不扣的苹果ios解锁大师。