十一 112011
 

刚刚碰到个很奇怪的问题,iPad发出的网络请求无法获取User-Agent,而使用浏览器去请求就可以正常获取。
iPad中,是使用ASIHttpRequest去发出请求的,NSLog了一下User-Agent,发现其中有中文,因为如果没有指定ASIHttpRequest发出的请求的User-Agent的话,ASIHttpRequest会默认的建立一个User-Agent。
结构是:appName, appVersion, deviceName, OSName, OSVersion, locale
其中appName默认是CFBundleDisplayName,这个在中文程序中一般为中文。所以只要修改这里就可以了。
在ASIHttpRequest.m的第4091行可以看到+ (NSString *)defaultUserAgentString 这个getter,修改其中的代码即可。怎么修改就不提了吧?

162011
 

原文是Apple 的 Custom Icon and Image Creation Guidelines 做一下备忘吧

给retina屏幕用的图标的命名是@2x哦,曾经犯了个错,写成了@x2,显示不正确=。=

自定义图标尺寸
描述 Size for iPhone and iPod touch (in pixels) Size for iPad (in pixels) 指南
Application icon (required) 57 x 57

114 x 114 (high resolution)

72 x 72 “Application Icons”
App Store icon (required) 512 x 512 512 x 512 “Application Icons”
Small icon for Spotlight search results and Settings (recommended) 29 x 29

58 x 58 (high resolution)

50 x 50 for Spotlight search results

29 x 29 for Settings

“Small Icons”
Document icon (recommended for custom document types) 22 x 29

44 x 58 (high resolution)

64 x 64

320 x 320

“Document Icons”
Web clip icon (recommended for web applications and websites) 57 x 57

114 x 114 (high resolution)

72 x 72 “Web Clip Icons”
Toolbar and navigation bar icon (optional) Approximately 20 x 20

Approximately 40 x 40 (high resolution)

Approximately 20 x 20 “Icons for Navigation Bars, Toolbars, and Tab Bars”
Tab bar icon (optional) Approximately 30 x 30

Approximately 60 x 60 (high resolution)

Approximately 30 x 30 “Icons for Navigation Bars, Toolbars, and Tab Bars”
Launch image (required) 320 x 480

640 x 960 (high resolution)

For portrait:

  • 768 x 1004

For landscape:

  • 1024 x 748
“Launch Images”
142011
 

今天下午发现,在UITabBar的子显示对象的- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 有点问题,屏幕旋转了,只是调用了UITabBar的shouldAutorotateToInterfaceOrientation,容器内部的显示对象并不会做出反应。那么只能检测屏幕的旋转事件了再做出相应的动作了

 



// Do any additional setup after loading the view from its nib.

//----- SETUP DEVICE ORIENTATION CHANGE NOTIFICATION -----

UIDevice *device = [UIDevice currentDevice]; //Get the device object

[device beginGeneratingDeviceOrientationNotifications]; //Tell it to start monitoring the accelerometer for orientation

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; //Get the notification centre for the app

[nc addObserver:self //Add yourself as an observer

selector:@selector(orientationChanged:)

name:UIDeviceOrientationDidChangeNotification

object:device];

 

 

 



- (void)orientationChanged:(NSNotification *)note

{

UIView *ftView = [self.view viewWithTag:200];

if([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight)

{

[ftView setFrame:CGRectMake(0, 0, 480, 200)];

}else

{

[ftView setFrame:CGRectMake(0, 0, 320, 360)];

}

}

 ref:http://www.ios-developer.net/iphone-ipad-programmer/development/notifications/orientation-change-notification
 Posted by at 6:01 下午  Tagged with:
072011
 

对于这个问题查了不少地方,有好多种解决方案,后来发现原来在iOS 4.1 之后,Apple 提供了UIKeyboardTypeDecimalPad这种键盘模式。

只要设置UITextField的keyboardType即可。

特别需要注意的是,只适合iOS 4.1之后的版本。

如果要兼容之前的版本,那么请参考:http://blog.devedup.com/index.php/2010/03/13/iphone-number-pad-with-a-decimal-point/

162011
 

前几天介绍了一下ASIHttpRequest  是神马东东。

今天再来说说,这玩意儿要怎么在项目中使用。

一、从Github(http://github.com/pokeb/asi-http-request/tree)下,把压缩包下过来。然后解压。

二、把Classes里的文件,拖到XCode中,还有把External/Reachbility也拖进去,这是Apple 官方用来检查网络链接是否正常的类库

三、再导入几个框架包。分别是SystemConfiguration.framework, MobileCoreServices.framework, CoreGraphics.framework,CFNetwork.frameworklibz.1.2.3.dylib

四、另外,还要把在头文件搜索路径中加入 libxml2的路径

 

至此,已经可以再项目中使用 ASIHttpRequest了。

072011
 

ASIHttpRequest 真的是个objective-c上一个非常不错的网络连接(CFNetwork API)封装库。在几个小型的练手App上用下来,很爽!

ASIHttpRequest 封装了很多的复杂逻辑,让开发者不必纠结于某些具体细节,而注重于业务逻辑处理上。ASIHttpRequest可以被用于Mac OS X 和iOS程序项目中。

ASIHttpRequest 的官网是:http://allseeing-i.com/ASIHTTPRequest/

项目托管在Github 上:http://github.com/pokeb/asi-http-request/tree

基于BSD 开源协议。