Translate

2012年12月26日 星期三

Init NSIndexPath

NSIndexPath *temp_IndexPath = [NSIndexPath indexPathForRow:lastIndexPath_row inSection:lastIndexPath_section]; 
其中lastIndexPath_row, lastIndexPath_section.形態為NSInteger 
主要是為了讓UITableView做edit有彈跳視窗所使用的

2012年12月20日 星期四

navigationBar setBackgroundImage


[naVC.navigationBar setBackgroundImage:[UIImage imageNamed:@"menubar.png"] forBarMetrics:UIBarMetricsDefault];

2012年12月19日 星期三

Xcode4.2 本地化多國語言Localizable跟AppleLanguages

1.再Supporting Files文件夾點右鍵,New File->iOS->Resource->Strings File取名為Localizable

2.選中Localizable.strings 再回Xcode->View->Utilites->File Inspector,再Localization中點擊+添加語言    比如中文英文日文

3.
Localizable.strings(English)
"test"=test";
Localizable.strings(Chinese)
"test="測試";

4.使用方法
[temp_lab setText:NSLocalizedString(@"test", @"測試用的")];
誇號裡第一個參數是要顯示的內容,與個Localozable.strings中的id對應
第二個參數是對第一個參數的註解,一般可以為空字串

另外也可以用程式取得使用者的語系
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSArray *languages = [defaults objectForKey:@"AppleLanguages"]; 
NSLog(@"%@", languages);

2012年12月7日 星期五

how to call shouldautorotatetointerfaceorientation

這個問題是我一個朋友問我的
覺得有可能需要紀錄下來

朋友的問題是
一開始假設機器是橫的
然後我拖動畫面~把開關設成NO~然後轉機器~這時候到了shouldAutorotateToInterfaceOrientation會因為我的布林值而不去旋轉畫面~但是事實上機器已經被設定成直式了
然後我放開後再去檢查機器的方向~這時候我會查到機器是直的~然後做直的layout~但是機器的畫面卻是橫的
所以畫面就整個不對了

最後結論就是
簡單來說就是怎麼去重新觸發shouldAutorotateToInterfaceOrientation

If you are target iOS 5, you can call

[UIViewController attempRotationToDeviceOrientation

which will can shouldAutorotateToInterfaceDeviceOrientation: with the device's current orientation and will rotate the interface if that method returns YES.

參考
http://stackoverflow.com/questions/9051192/iphone-change-orientation-manually

解決囉

2012年9月25日 星期二

NSArray compare 排序

其實一般NSArray的排序

NSArray *sortedArray = [temp_dic_dic sortedArrayUsingSelector:@selector(compare:)]; for(int i =0; i < [sortedArray count]; i++) { int x = [[sortedArray objectAtIndex:i] intValue]; NSLog(@"x is %d",x); }

但是我需要的是針對NSArray多個dictionary,每個dictionary都有個key值為"dddNumber",key值的形態為字串,如何依照NSString比對呢?

NSMutableArray *array = [[NSMutableArray alloc] init]; for (int i = 0; i < 10; i ++) { NSDictionary *aDict = [[NSDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"akdj%i", i], @"phaseNumber", nil]; [array addObject:aDict]; [aDict release]; } // 排序 NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"dddNumber" ascending:YES] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSArray *sortedArray = [array sortedArrayUsingDescriptors:sortDescriptors];
是要用intValue排序的话。上面代码是不对的,上面是按照String来排序的。 如果要按照intValue排序,参见如下:

方法
NSComparisonResult compare(NSDictionary *firstDict, NSDictionary *secondDict, void *context) {NSLog(@"IN(%i, %i)", [[firstDict objectForKey:@"ddd"] intValue], [[secondDict objectForKey:@"ddd"] intValue]); if ([[firstDict objectForKey:@"ddd"] intValue] < [[secondDict objectForKey:@"ddd"] intValue]) return NSOrderedAscending; else if ([[firstDict objectForKey:@"ddd"] intValue] > [[secondDict objectForKey:@"ddd"] intValue]) return NSOrderedDescending; else return NSOrderedSame; } [array sortUsingFunction:compare context:NULL];
使用
[array sortUsingFunction:compare context:NULL];

2012年9月5日 星期三

Application does not run in background

在專案的info.plist新增

Application does not run in background

設為YES


Where is the XCode 4 build directory?


Where is the XCode 4 build directory?

In all previous versions, XCode used to create a build directory inside the project folder and the executables were saved in that location.

However, XCode 4 changed all that.
Infact, I spent quite sometime searching for my executables.
XCode 4 uses the derived data location for storing your builds by default.

Just click on the XCode menu on the top bar, and select Preferences -> Locations tab.
Here under build location, you can see the default setting selected as "place build products in derived data location (recommended)".

And if you check the "Derived Data Location" section of this tab you will see the default location is /Users/..../Library/Developer/XCode/DerivedData.
You will see a small arrow next to this path and clicking on it takes you directly to this location and voila there is your build directory!

2012年8月29日 星期三

NSDateFormatter


部分日期格式的总结:
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init]autorelease];
[dateFormatter setAMSymbol:@"AM"];
[dateFormatter setPMSymbol:@"PM"];
[dateFormatter setDateFormat:@"dd/MM/yyyy hh:mmaaa"];
NSDate *date = [NSDate date];
NSString * s = [dateFormatter stringFromDate:date];
显示效果为:10/05/2010 03:49PM

下面附上几个格式:这个是从Cocoachina找来的:
yyyy:MM:dd G 'at' HH:mm:ss zzz            1996.07.10 AD at 15:08:56 PDT
EEE, MMM d, "yy                                         Wed,july 10, '99
h:mm a                                                     12:08 PM
hh 'o"clock' a,zzzz                                      12 o'clock PM, Pacific Daylight Time
K:mm a, z                                                 0:00 PM, PST
yyyyy,MMMM.dd GGG hh:mm aaa                01996.july.10 AD 12:08 PM

下面是得到当前的年,月,日,时,分,秒
NSCalendar *cal = [NSCalendar currentCalendar];
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dd = [cal components:unitFlags fromDate:date];
int y = [dd year];
int m = [dd month];
int d = [dd day];
int h = [dd hour];
int m = [dd minute];
int s = [dd second];
日期格式代表意義
yyyy = 年(4位數), yy = 年(最後2位數),MM = 月(1~12),MMM = 月(英文縮寫),MMMM = 月(英文完整)
K = 時(12小時制),H = 時(24小時制),mm = 分,ss = 秒,aa = 午前/午後(AM/PM)
dd = 日,EEE = 星期(英文縮寫),EEEE = 星期(英文完整)

2012年8月22日 星期三

UIWebView backgroundColor

web.backgroundColor = [UIColor clearColor]; web.opaque = NO; 关键是在HTML里:

2012年7月20日 星期五

UIView的圓角邊邊

畫圓角
記得framework需要加QuartzCore.framework
並且

#import <QuartzCore/QuartzCore.h>


UIImageView *img = [[UIImageView alloc] initWithFrame:imgframe]; [img setImage:image]; img.layer.cornerRadius = 3; img.layer.masksToBounds = YES; img.layer.borderWidth = 1; img.layer.borderColor = [[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0] CGColor];

2012年7月19日 星期四

UIImage to UIColor and UIColor to UIImage

UIImage *imgpattern = [UIImage imageNamed:@"box_bg.png"]; [info_sv setBackgroundColor:[UIColor colorWithPatternImage:imgpattern]];
- (UIImage *) createImageWithColor: (UIColor *) color { CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return theImage; }

2012年7月16日 星期一

UITabBarController UINavigationController

今天寫app的時候
忽然發現畫面上的UITabBarController的tabbar都要一直存在著
所以上網查了一下該如何呈現
原來把原來的寫法加上UINavigationController就可以了

原本寫法

UITabBarController *tabBarRootController = [[UITabBarController alloc] init]; tabBarRootController.delegate = self; AboutTableViewController *firstViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; TravelTableViewController *secondViewController = [[TravelTableViewController alloc] initWithNibName:@"TravelTableViewController" bundle:nil]; AboutTableViewController *thirdViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; AboutTableViewController *fourthViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; AboutTableViewController *fifthViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; tabBarRootController.viewControllers = [NSArray arrayWithObjects:firstViewController,secondViewController,thirdViewController,fourthViewController,fifthViewController,nil]; [self.navigationController pushViewController:tabBarRootController animated:YES];

後來改成

UITabBarController *tabBarRootController = [[UITabBarController alloc] init]; tabBarRootController.delegate = self; AboutTableViewController *firstViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; UINavigationController* firstnavController = [[UINavigationController alloc] initWithRootViewController:firstViewController]; TravelTableViewController *secondViewController = [[TravelTableViewController alloc] initWithNibName:@"TravelTableViewController" bundle:nil]; UINavigationController* secnavController = [[UINavigationController alloc] initWithRootViewController:secondViewController]; AboutTableViewController *thirdViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; UINavigationController* thirdnavController = [[UINavigationController alloc] initWithRootViewController:thirdViewController]; AboutTableViewController *fourthViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; UINavigationController* fourthnavController = [[UINavigationController alloc] initWithRootViewController:fourthViewController]; AboutTableViewController *fifthViewController = [[AboutTableViewController alloc] initWithNibName:@"AboutTableViewController" bundle:nil]; UINavigationController* fifthnavController = [[UINavigationController alloc] initWithRootViewController:fifthViewController]; tabBarRootController.viewControllers = [NSArray arrayWithObjects:firstnavController,secnavController,thirdnavController,fourthnavController,fifthnavController,nil]; [self.navigationController pushViewController:tabBarRootController animated:YES];

2012年7月11日 星期三

NSString contains NSString

NSString *string = @"hello bla bla"; if ([string rangeOfString:@"bla"].location == NSNotFound) { NSLog(@"string does not contain bla"); } else { NSLog(@"string contains bla!"); }

XCode4如何解决调试程序时,忽然崩溃,而找不到崩溃的代码

XCode4如何解决调试程序时,忽然崩溃,而找不到崩溃的代码

XCode4设置不太一样: 在Edit-->Scheme里面 找到Arguments

把下面3个值设置成YES
NSAutoreleaseFreedObjectCheckEnabled

NSZombieEnabled

NSDebugEnabled


另外 不是edit -> scheme
是 product -> edit scheme

testOurApps 一個可以列出開發者所有的app列表

testOurApps
是一個可以列出開發者所有的app列表
參考
如何在应用中列出自己开发的所有上线产品呢?
一般作法是把上线产品放在自己的服务器上,客户端到相应的接口上取产品列表。
如果没有服务器怎么办呢?
而且,把产品列表放在自己的服务器上,有产品上线或者产品更新时,得到服务器上更新列表。
下面展示一个查看指定开发者帐号的上线产品的示例。

主要是利用iTunes伺服器來做app列表
這demo很好用
但是讓我頭大的是
我找不到開法者的id
最後我亂點終於被我找到
先在iTunes上面搜尋公司的任何一個app
然後如圖在公司的標題上選拷貝鏈結

再把鏈結貼在流覽器上
可以看到類似這樣的link
https://itunes.apple.com/tw/artist/ozaki-worldwide-ltd./id404131504?l=zh
再把id404131504去掉id
就是開發者的id

2012年7月9日 星期一

ASIFormDataRequest upload NSData

request_upload = [ASIFormDataRequest requestWithURL:url]; [request_upload setRequestMethod:@"POST"]; [request_upload setPostValue:self.memid forKey:@"memid"]; [request_upload setPostValue:ShoID_str forKey:@"shoid"]; [request_upload setPostValue:textInfo.text forKey:@"worksname"]; [request_upload setData:image1Data withFileName:@"file_1.jpg" andContentType:@"image/jpeg" forKey:@"file_1"]; [request_upload setData:image2Data withFileName:@"file_2.jpg" andContentType:@"image/jpeg" forKey:@"file_2"]; [request_upload setDelegate:self]; [request_upload startAsynchronous];

2012年6月29日 星期五

RegexKitLite 編譯錯誤

解決辦法為
In project setting search "other" at Other Linker Flage put the word "-licucore".

2012年6月24日 星期日

icon dimensions (0 x 0) don't meet the size requirements

今天要上傳app store發生
icon dimensions (0 x 0) don't meet the size requirements
於是上網查

解決方法為
Edit Project Setting -> Build ->uncheck Compress PNG Files.


2012年6月15日 星期五

NSArray to NSString

从字符串分割到数组- componentsSeparatedByString: NSString *string = [[NSString alloc] initWithString:@"One,Two,Three,Four"]; NSLog(@"string:%@",string);
 NSArray *array = [string componentsSeparatedByString:@","];
 NSLog(@"array:%@",array); [string release]; 結果呈現 2012-06-15 17:10:34.028 Hotairballoon[546:707] string:One,Two,Three,Four 2012-06-15 17:10:34.029 Hotairballoon[546:707] array:( One, Two, Three, Four ) 从数组合并元素到字符串- componentsJoinedByString: NSArray *array = [[NSArray alloc] initWithObjects:@"One",@"Two",@"Three",@"Four",nil]; NSString *string = [array componentsJoinedByString:@","];
 NSLog(@"string:%@",string); 結果呈現 2012-06-15 17:16:57.596 Hotairballoon[565:707] string:One,Two,Three,Four

2012年6月13日 星期三

ASIHTTPRequest

ASIHTTPRequest
雖然作者已經沒在更新了但是我還是覺得不錯用
使用前記得要

#pragma mark -
#pragma mark ASIHTTPRequest delegate
- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSString *responseString = [request responseString];
}

- (void)requestFailed:(ASIHTTPRequest *)request
{

}


get直接給參數
例如

NSString *ip_url = [NSString stringWithFormat:@"%@%@", get_invitation_reward, AppDelegate.act_id]; NSURL *url = [NSURL URLWithString:ip_url]; request_list = [ASIHTTPRequest requestWithURL:url]; [request_list setDelegate:self]; [request_list startAsynchronous];



post逐一給參數
例如

NSURL *url = [NSURL URLWithString:set_reward_winner]; request_reward_winner = [ASIFormDataRequest requestWithURL:url]; [request_reward_winner setRequestMethod:@"POST"]; [request_reward_winner setPostValue:AppDelegate.act_id forKey:@"act_id"]; [request_reward_winner setPostValue:[[list_data objectAtIndex:select_row] objectForKey:@"code"] forKey:@"code"]; [request_reward_winner setPostValue:[prize_reward_id objectAtIndex:selectCom1Index] forKey:@"reward_id"]; [request_reward_winner setDelegate:self]; [request_reward_winner startAsynchronous];

2012年6月10日 星期日

iPhone/iPod Touch: Icon.png: icon dimensions (0 x 0) don't meet the size requirements

iPhone/iPod Touch:Icon.png:icon dimensions (0 x 0)don't meet the size requirements


解決辦法為在PROJECT專案上
選擇Build Settings->Packaging->Compress PNG Files->value : NO





2012年6月3日 星期日

UIImageView Animation Stop

轉自老外的好東西
實現UIImageView動畫結束通知

UIImageViewAnimatorSample



2012年5月31日 星期四

UIActionSheet+UIPickerView+UIToolbar+UIBarButtonItem

今天看到一個UIActionSheet+UIPickerView+UIToolbar+UIBarButtonItem的範例
詳細的網址為下


畫面很不錯但是我想應該還可以修正更好
有需要的朋友們可以拿來使用看看
這是我套用他的寫法產生出來的畫面

本來的畫面

我個人是比較喜歡修改過後的文字呈現拉
有需要的朋友們可以去看看原作者寫的方法

xcode read plist and txt

注意[NSBundle mainBundle]裡面的檔案是唯讀的不可變動

read plist NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"read" ofType:@"plist"]; NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; read txt NSString *txtpath = [[NSBundle mainBundle] pathForResource:@"read" ofType:@"txt"]; NSString *txtText = [NSString stringWithContentsOfFile:txtpath encoding:NSUTF8StringEncoding error:nil];

objective-c get app name and version

取得程式名稱

完整的 NSString *appDisplayNameString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; 簡短的 NSString *appBundleNameString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; 取得程式版本
NSString *appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

2012年5月30日 星期三

iPhone App Icon 去上方光圈

在Xcode裡面的info.plist

Key
Icon already includes gloss effects

Type
Boolean

Value
YES

這樣Icon就會去光圈

iTunes上的512*512的圖
會等審核成功後也會一起去光圈不必擔心

如何在Blogger post code block

首先先進入Blogger的總覽

1.選擇範本點選修改HTML
2.點選繼續


3.找尋/* Post

4.加上這段程式碼

.post code { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 10pt; margin:.75em 0; overflow: auto; background: #000000 left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; line-height: 1.2em; white-space: pre; }
5.加完之後記得按下儲存範本


6.以後寫Blogger需要code block時,切換至HTML模式在程式碼的前後加上<code></code>

如下

<code>
程式碼...
</code>
(PS:如果程式碼中有特殊符號,記得用HTML Encode轉換)


2012年5月29日 星期二

iOS參考網站

元件參考

Cocoa Controls
http://cocoacontrols.com/
相當好用的網站,很多高手在裡面分享自己的東西,但是有些東西還是會有問題。

中國Controls資源分享

UI 畫面參考
這網站本身的設計跟用色就已經很成功了

論壇
中國

台灣

Erica Sadun

Ray Wenderlich

Objective-C make short url

使用Client來作short url
目前我有找到三個
最基本最簡單的為http://tinyurl.com/

做法很簡單

NSString *link = [NSString stringWithFormat:@"http://tw.yahoo.com/"];
NSURL *url = [NSURL URLWithString: [NSString stringWithFormat:@"http://tinyurl.com/api-create.php?url=%@", link]];
NSString *link_shorten = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:nil];
NSLog(@"link_shorten is %@",link_shorten);



再來是google的服務


請上git下載原作者開源碼

用法


GSUrl *url = [[GSUrl alloc] initWithString:@"http://tw.yahoo.com/"];
NSLog(@"[url shorten] is %@",[url shorten]);

好處是可以再解析短網址還原長網址內容
# GSUrl

Google URL Shortener in Objective-C

I create this class for my studies in Objective-C

## Usage
    GSUrl *url = [[GSUrl alloc] initWithString:@"www.someurlhere.com"];
    [url shorten]; // => http://goo.gl/aGf9V

## Json
  I use [json-framework]("http://stig.github.com/json-framework") for parser.

## TODO
- Expand a short URL
- Look up a short URL's analytics
- Look up a user's history




最最最複雜的是

用法
MKBitlyHelper *bitlyHelper = [[MKBitlyHelper alloc] initWithLoginName:@"yourlogin" andAPIKey:@"yourapi"];
NSString *shortURL = [bitlyHelper shortenURL:@"http://mugunthkumar.com"];
NSString *longURL = [bitlyHelper expandURL:shortURL];

因為本人英文不好所以也沒去申請網頁申請

bit.ly的服務如果有人知道如何申請

請告訴我詳細步驟謝謝

2012年5月28日 星期一

Objective-C 取亂數arc4random()

本身我自己是使用arc4random()來取亂數

因為使用rand()亂數會發現每次從新執行應用程式會取得的數值都是一樣的

這邊是我自己對開發IOS的紀錄

這邊是我自己對開發IOS的紀錄
沒什麼特別的
以利於自己回來找些文章比較快速
請大家多多指教