1.給UITableViewController添加ToolBar。
self.navigationController.toolbarHidden = NO; //默認是隱藏的。
//添加MessageToolBar ,messageToolBar是IBOutlet的一個ToolBar。
self.toolbarItems = [[[NSMutableArray alloc] initWithArray:self.messageToolBar.items] autorelease];
self.navigationController.toolbar.barStyle = self.messageToolBar.barStyle;
2.後臺運行一個方法,如果該方法需要修改UI,爲了防止出錯,應在主線程裏修改UI。
[self performSelectorInBackground:@selector(updateInfo)];
在UpdateInfo裏如果要修改UI ,
[self performSelectorOnMainThread:@selector(updateUIMethod) withObject:nil waitUntilDone:NO];
同時注意,後臺程序的方法應該放在NSAutoRelease pool裏的,如下所示:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
xxxx
[pool release];
3.在A類裏動態的設定B類或者C類的方法。
[self.actionTarget performSelector:self.actionMethod withObject:parameter];
actionTarget -> id類型的屬性。設置B 類或者C類。
actionMethod -> Sel類型的屬性。設置具體的方法名
parameter -> 參數
4.設置Navigation的提示信息和進度條設置
self.navigationItem.prompt : 提示信息
self.navigationItem.titleView :存放ProgressBar等其它提示信息的View
在進度條顯示完了後,需要清空顯示進度信息:
self.navigationItem.prompt = nil;
self.navigationItem.titleView = nil;
5.從資源文件xib里加載View的方法
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyView"
owner:self
options:nil];
MyView *view = [nib objectAtIndex:0];
6. UIAlterView 修改默認的Frame高度
在其委託裏實現這個方法
-(void)willPresentAlertView:(UIAlertView*)alertView
{
alertView.frame =CGRectMake(5.f,1.f,100.f,200.f);
}
參考:http://stackoverflow.com/questions/2763713/change-width-of-uialertview-in-ipad
7.獲取iphone屏幕大小
CGRect screenBounds = [ [ UIScreen mainScreen ] bounds ];
CGRect screenRect= [ [ UIScreen mainScreen ] applicationframe ];
8. 修改TableView的樣式,讓UITableView顯示Windows的背景圖片。
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;
如果要修改UITableCell的事情backgroundColor需要再 tableView:willDisplayCell:forRowAtIndexPath:裏修改。
9.通過圖片獲取顏色。
修改分割線顏色
self.tableView.separatorColor = [UIColor blackColor];
顯示文本的地方設置透明色
cell.textLabel.opaque = NO;
這樣整個cell就有立體感。
10.設置UITableView 的checkmark顯示樣式
修改cell的 accessoryView
cell.accessoryView = UIImageView
11. 修改TableView距離導航纜的高度。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
12. 自定義TableViewCell的背景顏色和選擇後的顏色。
方法一:將TableViewCell的backgroundView和SelectBackGroundView修改成指定的View就可以了。
方法二: 在Interface Builder裏設置cell的image和SelectImage屬性,但是要記得UItableView修改seperator的屬性爲None
13 顏色定義。
美工一般定義好顏色,然後讓程序員去填充顏色,美工一般給的是RGB顏色,那麼RGB顏色如果換成UIColor
[UIColor colorWithRed:31.0/255 green:204.0/255 blue:39.0/255 alpha:1.0];
Red,Green,Blue只接受0-1的參數,換算方法是除以255。
14. Xcode 4設置 NSZombieEnabled
if you click on the scheme drop down bar -> edit scheme -> arguments tab and then add NSZombieEnabled in the Environment Variables column and YES in the value column
15.自動生成多語言化的StringTable
如果在代碼裏全部是通過 NSLocalizedString(@"中文", nil)來對應多語言,最後要整理一個list,手動一個一個粘貼太麻煩。
自動化生成方法:在命令行目錄下進入項目根目錄:執行 genstrings -a $(find . -name "*.m"),就會自動生成一個文件對應。
參考網址 http://steelwheels.sourceforge.jp/Documents/genstring.html
http://iphone.longearth.net/2009/05/25/%E3%80%90iphone%E3%80%91localizablestrings%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7%E4%BD%9C%E3%82%8B-genstrings/
16.自定義bond字體
[UIFont fontWithName:@"Helvetica-Bold" size:16.0]
17 無邊框透明UITableViewCell
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.separatorColor = [UIColor clearColor];
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = nil;
--Cell修改--
self.backgroundView = [[[UIView alloc] init] autorelease];
self.backgroundView.backgroundColor = [UIColor clearColor];
self.selectedBackgroundView = [[[UIView alloc] init] autorelease];
self.selectedBackgroundView.backgroundColor = [UIColor clearColor];
18. 隱藏Tabbar
SampleViewController*obj =[[SampleViewController alloc] init];
[obj setHidesBottomBarWhenPushed:YES];
[self.navigationController pushViewController:obj animated:YES];
[obj release];
19.從UIView獲取UImage
- (UIImage *)getImageFromView:(UIView *)orgView
{ UIGraphicsBeginImageContext(orgView.bounds.size);
[orgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
20. 添加手式識別後,會屏蔽掉touchend方法
21.獲取手機號碼,和IMEI
[[NSUserDefaults standardUserDefaults] valueForKey:@"SBFormattedPhoneNumber"];
獲取手機的imei
#import "Message/NetworkController.h"
NetworkController *ntc=[[NetworkController sharedInstance] autorelease];
NSString *imeistring = [ntc IMEI];
imeistring就是獲取的imei。 IMEI(International Mobile Equipment Identity)是國際移動設備身份碼的縮寫,國際移動裝備辨識碼,是由15位數字組成的"電子串號",它與每臺手機一一對應,而且該碼是全世界唯一的。
22 NLog的格式,經常忘記,做個筆記
23.更改UISearchBar最下面黑色的邊框
#define SEARCHBAR_BORDER_TAG 1337
24.設置鍵盤的默認形式。
比如UITextField 設置爲默認數字,和只允許數組數字
//默認數字
textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation
//只允許輸入數字
textField.keyboardType = UIKeyboardTypeNumberPad
25.UIButton設置文字左對齊
[myLabel release];
26. retain異常的時候重載這個方法設置斷點查看和分析
- (id) retain
27.去掉白色半圓
Plist添加
Icon already includes gloss effects 爲YES
UIPrerenderedIcon 設置不起作用(Xcode4 .0.2)
28.tableView reloadRowsAtIndexPaths 如果不在可見區域,將不會重新加載。
29. 設置應用程序的statusbaryanse
再plist裏設置Status bar style Opaque black style
30. 設置控件的copy paste的本地化
- 設置Localization native development region =》 china
- 將項目的en.lproj 改成zh_CN.lproj
31. 允許應用程序通過itunes上傳文件(ios3.2以上)
在info.plist裏設置 UIFileSharingEnabled => YES
32. 獲取UICOLOR的rgb值
NSLog(@"Alpha: %f", CGColorGetAlpha(SelectedColor.CGColor));
33.獲取2個時間之間的天,小時,分鐘
+(NSString *)TimeRemainingUntilDate:(NSDate *)date {
34. Icon specified in the Info.plist not found under the top level app wrapper
記住Icon 首字母是大寫的,不是icon.png , 是Icon.png
35.
http://www.cnblogs.com/baryon/archive/2010/05/06/1728968.html
http://www.douban.com/note/131009422/
36.獲取手機唯一ID
NSString *deviceUID = [[NSString alloc] initWithString:[device uniqueIdentifier]];
NSLog(@"%@",deviceUID); // 輸出設備id
37 .動態調用一個類的方法
View Code
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
[invocation setTarget:self];
[invocation setSelector:selector];
[invocation setArgument:arg atIndex:2];
38.改變NavigationViewController默認動畫,讓其旋轉
navigationController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
39 .顯示和隱藏StatsBar
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
啓動隱藏StatusBar info.plist 添加 Status bar is initially hidden 爲bool Yes
40 . 點擊某個cell的按鈕,收藏到tabbar裏
http://stackoverflow.com/questions/5926554/get-uitableviewcell-position-from-visible-area-or-window
41. CoreText用文字填充不規則圖形
CGContextRef context = UIGraphicsGetCurrentContext();
// Flip the coordinate system
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// Create a path to render text in
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRect(path, NULL, self.bounds );
// An attributed string containing the text to render
NSAttributedString* attString = [[NSAttributedString alloc]
initWithString:...];
// Create a path to wrap around
CGMutablePathRef clipPath = CGPathCreateMutable();
CGPathAddEllipseInRect(clipPath, NULL, CGRectMake(200, 200, 300, 300) );
// A CFDictionary containing the clipping path
CFStringRef keys[] = { kCTFramePathClippingPathAttributeName };
CFTypeRef values[] = { clipPath };
CFDictionaryRef clippingPathDict = CFDictionaryCreate(NULL,
(const void **)&keys, (const void **)&values,
sizeof(keys) / sizeof(keys[0]),
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
// An array of clipping paths -- you can use more than one if needed!
NSArray *clippingPaths = [NSArray arrayWithObject:(NSDictionary*)clippingPathDict];
// Create an options dictionary, to pass in to CTFramesetter
NSDictionary *optionsDict = [NSDictionary dictionaryWithObject:clippingPaths forKey:(NSString*)kCTFrameClippingPathsAttributeName];
// Finally create the framesetter and render text
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attString); //3
CTFrameRef frame = CTFramesetterCreateFrame(framesetter,
CFRangeMake(0, [attString length]), path, optionsDict);
CTFrameDraw(frame, context);
// Clean up
CFRelease(frame);
CFRelease(path);
CFRelease(framesetter);
http://amyworrall.com/post/11098565269/text-wrap-with-core-text
42 . Animation開始和結束callback
UIView
- (void)animateStuff {
[UIView setAnimationDelegate:self];
[self.view doWhatever];
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if ([finished boolValue]) {
NSLog(@"Animation Done!");
}
CoreAnimation
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"];
anim.delegate = self;-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
}
43 .UITableView無法接受Touchbegin問題
在UITableViewCell裏去實現Touchebegin.
44. ImagePickerView不顯示Perview,同時顯示自己的coverView一定要設置屬性showsCameraControls=NO;
picker.allowsEditing = NO;
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo { //do whatever [self dismissModalViewControllerAnimated:YES]; }