iOS開(kāi)發(fā)筆記
退回輸入鍵盤(pán):
- - (BOOL) textFieldShouldReturn:(id)textField{
- [textField resignFirstResponder];
- }
CGRect
CGPoint & CGSize
- CGPoint aPoint = CGPointMake(x, y); CGSize aSize = CGSizeMake(width, height);
設(shè)置透明度
- [myView setAlpha:value]; (0.0 < value < 1.0)
設(shè)置背景色
- [myView setBackgroundColor:[UIColor redColor]];
- (blackColor;darkGrayColor;lightGrayColor;whiteColor;grayColor; redColor; greenColor; blueColor; cyanColor;yellowColor;magentaColor;
- orangeColor;purpleColor;brownColor; clearColor; )
自定義顏色:
- UIColor *newColor = [[UIColor alloc] initWithRed:(float) green:(float) blue:(float) alpha:(float)]; 0.0~1.0
寬度和高度
1
|
768X1024 1024X768 狀態(tài)欄高 20 像素高 導(dǎo)航欄 工具欄 44像素高
|
隱藏狀態(tài)欄:
- [[UIApplication shareApplication] setStatusBarHidden: YES animated:NO]
橫屏:
- [[UIApplication shareApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight].
- orientation == UIInterfaceOrientationLandscapeLeft
- window=[[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds];全屏
自動(dòng)適應(yīng)父視圖大小:
- aView.autoresizingSubviews = YES;
- aView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
定義按鈕
- UIButton *scaleUpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- [scaleUpButton setTitle:@"放 大"forState:UIControlStateNormal];
- scaleUpButton.frame = CGRectMake(40, 420, 100, 40);
- [scaleUpButton addTarget:self action:@selector(scaleUp) forControlEvents:UIControlEventTouchUpInside];
設(shè)置視圖背景圖片
- UIImageView *aView;
- [aView setImage:[UIImage imageNamed:@”name.png”]];
- view1.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"image1.png"]];
- UISlider *slider = (UISlider *) sender;
- NSString *newText = [[NSString alloc] initWithFormat:@”%d”, (int)(slider.value + 0.5f)];
- label.text = newText;
活動(dòng)表單 <UIActionSheetDelegate>
- - (IBActive) someButtonPressed:(id) sender
- {
- UIActionSheet *actionSheet = [[UIActionSheet alloc]
- initWithTitle:@”Are you sure?”
- delegate:self
- cancelButtonTitle:@”No way!”
- destructiveButtonTitle:@”Yes, I’m Sure!”
- otherButtonTitles:nil];
- [actionSheet showInView:self.view];
- [actionSheet release];
- }
警告視圖 <UIAlertViewDelegate>
- - (void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex
- {
- if(buttonIndex != [actionSheet cancelButtonIndex])
- {
- NSString *message = [[NSString alloc] initWithFormat:@”You can
- breathe easy, everything went OK.”];
- UIAlertView *alert = [[UIAlertView alloc]
- initWithTitle:@”Something was done”
- message:message
- delegate:self
- cancelButtonTitle:@”OK”
- otherButtonTitles:nil];
- [alert show];
- [alert release];
- [message release];
- }
- }
動(dòng)畫(huà)效果
- -(void)doChange:(id)sender
- {
- if(view2 == nil)
- {
- [self loadSec];
- }
- [UIView beginAnimations:nil context:NULL];
- [UIView setAnimationDuration:1];
- [UIView setAnimationTransition:([view1 superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromRight)forView : self.view cache:YES];
- if([view1 superview]!= nil)
- {
- [view1 removeFromSuperview];
- [self.view addSubview:view2];
- }else{
- [view2 removeFromSuperview];
- [self.view addSubview:view1];
- }
- [UIView commitAnimations];
- }
Table View <UITableViewDateSource>
- #pragma mark -
- #pragma mark Table View Data Source Methods
- //指定分區(qū)中的行數(shù),默認(rèn)為1
- - (NSInteger)tableView:(UITableView *)tableView
- numberOfRowsInSection:(NSInteger)section
- {
- return[self.listDatacount];
- }
- //設(shè)置每一行cell顯示的內(nèi)容
- - (UITableViewCell *)tableView:(UITableView *)tableView
- cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- staticNSString *SimpleTableIndentifier = @"SimpleTableIndentifier";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIndentifier];
- if(cell == nil) {
- cell = [[[UITableViewCell alloc]
- initWithStyle:UITableViewCellStyleSubtitle
- reuseIdentifier:SimpleTableIndentifier]
- autorelease];
- }
- UIImage *image = [UIImage imageNamed:@"13.gif"];
- cell.imageView.image = image;
- NSUInteger row = [indexPath row];
- cell.textLabel.text = [listData objectAtIndex:row];
- cell.textLabel.font = [UIFont boldSystemFontOfSize:20];
- if(row < 5)
- cell.detailTextLabel.text = @"Best friends";
- else
- cell.detailTextLabel.text = @"friends";
- returncell;
- }
圖像:如果設(shè)置圖像,則它顯示在文本的左側(cè)
文本標(biāo)簽:這是單元的主要文本(UITableViewCellStyleDefault 只顯示文本標(biāo)簽)
詳細(xì)文本標(biāo)簽:這是單元的輔助文本,通常用作解釋性說(shuō)明或標(biāo)簽
- UITableViewCellStyleSubtitle
- UITableViewCellStyleDefault
- UITableViewCellStyleValue1
- UITableViewCellStyleValue2
- <UITableViewDelegate>
- #pragma mark -
- #pragma mark Table View Delegate Methods
- //把每一行縮進(jìn)級(jí)別設(shè)置為其行號(hào)
- - (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSUInteger row = [indexPath row];
- returnrow;
- }
- //獲取傳遞過(guò)來(lái)的indexPath值
- - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSUInteger row = [indexPath row];
- if(row == 0)
- returnnil;
- returnindexPath;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- NSUInteger row = [indexPath row];
- NSString *rowValue = [listData objectAtIndex:row];
- NSString *message = [[NSString alloc] initWithFormat:@"You selected %@",rowValue];
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Row Selected"
- message:message
- delegate:nil
- cancelButtonTitle:@"Yes, I did!"
- otherButtonTitles:nil];
- [alert show];
- [alert release];
- [message release];
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
- }
- //設(shè)置行的高度
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- return40;
- }
隨機(jī)數(shù)的使用
- 頭文件的引用
- #import <time.h>
- #import <mach/mach_time.h>
- srandom()的使用
- srandom((unsigned)(mach_absolute_time() & 0xFFFFFFFF));
- 直接使用 random() 來(lái)調(diào)用隨機(jī)數(shù)
在UIImageView 中旋轉(zhuǎn)圖像
- float rotateAngle = M_PI;
- CGAffineTransform transform =CGAffineTransformMakeRotation(rotateAngle);
- imageView.transform = transform;
以上代碼旋轉(zhuǎn)imageView, 角度為rotateAngle, 方向可以自己測(cè)試哦!
在Quartz中如何設(shè)置旋轉(zhuǎn)點(diǎn)
- UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bg.png"]];
- imageView.layer.anchorPoint = CGPointMake(0.5, 1.0);
這個(gè)是把旋轉(zhuǎn)點(diǎn)設(shè)置為底部中間。記住是在QuartzCore.framework中才得到支持。
#p#
創(chuàng)建.plist文件并存儲(chǔ)
- NSString *errorDesc; //用來(lái)存放錯(cuò)誤信息
- NSMutableDictionary *rootObj = [NSMutableDictionary dictionaryWithCapacity:4];//NSDictionary, NSData等文件可以直接轉(zhuǎn)化為plist文件
- NSDictionary *innerDict;
- NSString *name;
- Player *player;
- NSInteger saveIndex;
- for(int i = 0; i < [playerArraycount]; i++) {
- player = nil;
- player = [playerArray objectAtIndex:i];
- if(player == nil)
- break;
- name = player.playerName;// This “Player1″ denotes the player name could also be the computer name
- innerDict = [self getAllNodeInfoToDictionary:player];
- [rootObj setObject:innerDict forKey:name];// This “Player1″ denotes the person who start this game
- }
- player = nil;
- NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:(id)rootObj format:NSPropertyListXMLFormat_v1_0 errorDescription:&errorDesc];
***2行可以忽略,只是給rootObj添加一點(diǎn)內(nèi)容。這個(gè)plistData為創(chuàng)建好的plist文件,用其writeToFile方法就可以寫(xiě)成文件。下面是代碼:
- 17 /*得到移動(dòng)設(shè)備上的文件存放位置*/
- NSString *documentsPath = [self getDocumentsDirectory];
- NSString *savePath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
- /*存文件*/
- if(plistData) {
- [plistData writeToFile:savePath atomically:YES];
- }
- else{
- NSLog(errorDesc);
- [errorDesc release];
- }
- - (NSString *)getDocumentsDirectory {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- return[paths objectAtIndex:0];
- }
讀取plist文件并轉(zhuǎn)化為NSDictionary
- NSString *documentsPath = [self getDocumentsDirectory];
- NSString *fullPath = [documentsPath stringByAppendingPathComponent:@"save.plist"];
- NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:fullPath];
讀取一般性文檔文件
- NSString *tmp;
- NSArray *lines;/*將文件轉(zhuǎn)化為一行一行的*/
- lines = [[NSString stringWithContentsOfFile:@"testFileReadLines.txt"]
- componentsSeparatedByString:@”\n”];
- NSEnumerator *nse = [lines objectEnumerator];
- // 讀取<>里的內(nèi)容
- while(tmp = [nse nextObject]) {
- NSString *stringBetweenBrackets = nil;
- NSScanner *scanner = [NSScanner scannerWithString:tmp];
- [scanner scanUpToString:@"<"intoString:nil];
- [scanner scanString:@"<"intoString:nil];
- [scanner scanUpToString:@">"intoString:&stringBetweenBrackets];
- NSLog([stringBetweenBrackets description]);
- }
對(duì)于讀寫(xiě)文件,還有補(bǔ)充,暫時(shí)到此。隨機(jī)數(shù)和文件讀寫(xiě)在游戲開(kāi)發(fā)中經(jīng)常用到。所以把部分內(nèi)容放在這,以便和大家分享,也當(dāng)記錄,便于查找。
隱藏NavigationBar
- [self.navigationController setNavigationBarHidden:YES animated:YES];
在想隱藏的ViewController中使用就可以了。
如果無(wú)法保證子類(lèi)行為的一致性,那么就用委托
- If the subClass cann’t keep with superClass,use delegate rather than inheritance.
屏幕上看到的,都是UIVew
- Everything you see on Screen is UIView.
如果對(duì)性能要求高,慎用Interface Build
- if application’s performance is important,be discreet for the interface build.
copy是創(chuàng)建,retain是引用
- the copy operation is create a new one,but the retain operation is just a reference.
alloc需要release,convenient不需要release
- alloc method need corresponding release method,but convenient method not.
加載到NSArray/NSMutableArray里的對(duì)象,不需要負(fù)責(zé)release
- The objects added to NSArray/NSMutableArray need not to be released.
IBOutlet,IBAction為你開(kāi)啟了訪問(wèn)Interface Build中對(duì)象的大門(mén)
- IBOutlet and IBAction open the door to access the objects in Interface build.
UIApplicationDelegate負(fù)責(zé)應(yīng)用程序的生命周期,而UIViewController負(fù)責(zé)View的生命周期
- UIApplicationDelegate is responsible for the application life cycle,but UIViewController for the UIView.
為了程序的健壯性,請(qǐng)盡量實(shí)現(xiàn)Delegate的生命周期函數(shù)
- if you want to develop a robust application,implement the life cycle methods as more as possbile.
you觸摸的不是UIEvent,而是NSSet的UIView
- what you touch on screen is not UIEvent but UIView
UITextField不響應(yīng)鍵盤(pán):
- 方法1: TextField的的Touch Cancel響應(yīng)中,添加[textFied resignFirstResponder];
- 方法: - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
- [textFied resignFirstResponder]; }
更改響應(yīng)鍵盤(pán)return按鈕:
- TextField.returnKeyType=UIReturnKeyDone;
- select:
- UIReturnKeyDefault,
- UIReturnKeyGo,
- UIReturnKeyGoogle,
- UIReturnKeyJoin,
- UIReturnKeyNext,
- UIReturnKeyRoute,
- UIReturnKeySearch,
- UIReturnKeySend,
- UIReturnKeyYahoo,
- UIReturnKeyDone,
- UIReturnKeyEmergencyCall,
尺寸問(wèn)題:
- iPhone應(yīng)用程序圖標(biāo)大小:57*57;
- iPhone全屏UIView大小:320*460 添加UITabBar后大小:320*411
- UITabelViewCell默認(rèn)大小: 320*44
繪制控件方法
- //--alloc
- -(UITextField *)GetDefaultTextField:(CGRect)frame{
- UITextField *textField=[[UITextField alloc] initWithFrame:frame];
- textField.borderStyle=UITextBorderStyleRoundedRect;
- textField.font=[UIFont fontWithName:@"Arial"size:12.0];
- textField.textAlignment=UITextAlignmentCenter;
- textField.contentVerticalAlignment=UIControlContentVerticalAlignmentCenter;
- textField.keyboardType=UIKeyboardTypeNumbersAndPunctuation;
- textField.returnKeyType=UIReturnKeyDone;
- textField.delegate=self;
- returntextField;
- }
- //--alloc
- -(UILabel *)GetDefaultLabel:(CGRect)frame{
- UILabel *label = [[UILabel alloc] initWithFrame: frame];
- label.textAlignment=UITextAlignmentCenter;
- label.textColor=[UIColor blackColor];
- label.backgroundColor=[UIColor clearColor];
- label.font=[UIFont boldSystemFontOfSize:12.0];
- returnlabel;
- }
- //--alloc
- -(UIButton *)GetDefaultButton:(CGRect)frame{
- UIButton *button=[[UIButton alloc] initWithFrame:frame];
- [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
- [button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
- [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
- [button.titleLabel setFont:[UIFont boldSystemFontOfSize:14.0]];
- [button.titleLabel setLineBreakMode:UILineBreakModeCharacterWrap];
- [button addTarget:self action:@selector(btnTradeTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];
- [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
- [button setBackgroundImage:[UIImage imageNamed:@"png1.png"] forState:UIControlStateNormal];
- [button setBackgroundColor:[UIColor lightGrayColor]];
- button.tag=kButtonTag;
- returnbutton;}
多使用宏定義常量。tag,frame大小,一些判斷標(biāo)志位。
1
|
#define kIndexValueTag 1
|
蘋(píng)果屏幕截圖快捷鍵
一般在Mac上用Command-Shif-3/4來(lái)截圖。注:Command=蘋(píng)果鍵 其實(shí)還有幾個(gè)輔助鍵,來(lái)起到不同的截圖功能……
- 1)Command-Shift-3(適用于OS9,10.1X和10.2)
- 將整個(gè)屏幕拍下并保存到桌面。
- 2)Command-Shift-4(適用于OS9,10.1X和10.2)
- 將屏幕的一部分拍下并保存到桌面。當(dāng)按下著幾個(gè)鍵后,光標(biāo)會(huì)變?yōu)橐粋€(gè)十字,可以拖拉來(lái)選取拍報(bào)區(qū)域。
- 3)Command-Shift-Control-3(適用于OS9和10.2)
- 將整個(gè)屏幕拍下并保存到剪貼板,可以Command+V直接粘貼到如Photoshop等軟件中編輯。
- 4)Command-Shift-Control-4(適用于OS9和10.2)
- 將屏幕的一部分拍下并保存到剪貼板。
- 5)Command-Shift-4再按空格鍵(適用于10.2)
- 光標(biāo)會(huì)變成一個(gè)照相機(jī),點(diǎn)擊可拍下當(dāng)前窗口或菜單或Dock以及圖標(biāo)等,只要將照相機(jī)移動(dòng)到不用區(qū)域(有效區(qū)域會(huì)顯示為淺藍(lán)色)點(diǎn)擊。
- 6)Command-Shift-Control-4再按空格鍵(適用于10.2)
- 將選取的窗口或其他區(qū)域的快照保存到剪貼板。
- 7)Command-Shift-Capslock-4(適用于OS9)
- 將當(dāng)前的窗口拍下并保存到桌面。
- 8)Command-Shift-Capslock-Control-4(適用于OS9)
- 將當(dāng)前的窗口拍下并保存到剪貼板。