首页 ios_dev_notes

ios_dev_notes

举报
开通vip

ios_dev_notesiphone開發筆記 退回輸入鍵盤   - (BOOL) textFieldShouldReturn:(id)textField{     [textField  resignFirstResponder]; }   CGRect CGRect frame = CGRectMake (origin.x, origin.y, size.width, size.height);矩形 NSStringFromCGRect(someCG) 把CGRect結構轉變為格式化字串; CGRectFromString(aStrin...

ios_dev_notes
iphone開發筆記 退回輸入鍵盤   - (BOOL) textFieldShouldReturn:(id)textField{     [textField  resignFirstResponder]; }   CGRect CGRect frame = CGRectMake (origin.x, origin.y, size.width, size.height);矩形 NSStringFromCGRect(someCG) 把CGRect結構轉變為格式化字串; CGRectFromString(aString) 由字串恢復出矩形; CGRectInset(aRect) 創建較小或較大的矩形(中心點相同),+較小  -較大 CGRectIntersectsRect(rect1, rect2) 判斷兩矩形是否交叉,是否重疊 CGRectZero 高度和寬度為零的/位於(0,0)的矩形常量   CGPoint & CGSize CGPoint aPoint = CGPointMake(x, y);    CGSize aSize = CGSizeMake(width, height);   設置透明度 [myView setAlpha:value];   (0.0 < value < 1.0) 設置背景色 [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 豎屏 320X480 橫屏 480X320    狀態欄高 (顯示時間和網路狀態) 20 圖元   導航欄、工具欄高(返回) 44圖元 隱藏狀態欄 [[UIApplication shareApplication] setStatusBarHidden: YES animated:NO]   橫屏 [[UIApplication shareApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]. 螢幕變動檢測 orientation == UIInterfaceOrientationLandscapeLeft 全屏 window=[[UIWindow alloc] initWithFrame:[UIScreen mainScreen] bounds];   自動適應父視圖大小: 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];   設置視圖背景圖片 UIImageView *aView; [aView setImage:[UIImage imageNamed:@”name.png”]]; view1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"image1.png"]];   自定義UISlider的樣式和滑塊 我們使用的是UISlider的setMinimumTrackImage,和setMaximumTrackImage方法來定義圖片的,這兩個方法可以設置滑塊左邊和右邊的圖片的,不過如果用的是同一張圖片且寬度和控制項寬度基本一致,就不會有變形拉伸的後果,先看代碼,寫在 viewDidLoad中: //左右軌的圖片 UIImage *stetchLeftTrack= [UIImage imageNamed:@"brightness_bar.png"]; UIImage *stetchRightTrack = [UIImage imageNamed:@"brightness_bar.png"]; //滑塊圖片 UIImage *thumbImage = [UIImage imageNamed:@"mark.png"]; UISlider *sliderA=[[UISlider alloc]initWithFrame:CGRectMake(30, 320, 257, 7)]; sliderA.backgroundColor = [UIColor clearColor]; sliderA.value=1.0; sliderA.minimumValue=0.7; sliderA.maximumValue=1.0; [sliderA setMinimumTrackImage:stetchLeftTrack forState:UIControlStateNormal]; [sliderA setMaximumTrackImage:stetchRightTrack forState:UIControlStateNormal]; //注意這裏要加UIControlStateHightlighted的狀態,否則當拖動滑塊時滑塊將變成原生的控制項 [sliderA setThumbImage:thumbImage forState:UIControlStateHighlighted]; [sliderA setThumbImage:thumbImage forState:UIControlStateNormal]; //滑塊拖動時的事件 [sliderA addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged]; //滑動拖動後的事件 [sliderA addTarget:self action:@selector(sliderDragUp:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:sliderA];   為了大家實驗方便,我附上背景圖brightness_bar.png和滑塊圖mark.png http://pic002.cnblogs.com/images/2011/162291/2011121611431816.png http://pic002.cnblogs.com/images/2011/162291/2011121611432897.png -(IBAction)sliderValueChanged:(id)sender{ UISlider *slider = (UISlider *) sender; NSString *newText = [[NSString alloc] initWithFormat:@”%d”, (int)(slider.value + 0.5f)]; label.text = newText; }   活動 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf  - (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]; }   警告視圖   - (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];      } }   動畫效果 -(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   #pragma mark - #pragma mark Table View Data Source Methods //指定分區中的行數,默認為1 - (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:(NSInteger)section { return [self.listData count]; }   //設置每一行cell顯示的內容 - (UITableViewCell *)tableView:(UITableView *)tableView  cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *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"; return cell; } 圖像、文本標籤和詳細文本標籤 圖像:如果設置圖像,則它顯示在文本的左側; 文本標籤:這是單元的主要文本(UITableViewCellStyleDefault 只顯示文本標籤);詳細文本標籤:這是單元的輔助文本,通常用作解釋性說明或標籤 UITableViewCellStyleSubtitle UITableViewCellStyleDefault UITableViewCellStyleValue1 UITableViewCellStyleValue2   #pragma mark - #pragma mark Table View Delegate Methods //把每一行縮進級別設置為其行號 - (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; return row; } //獲取傳遞過來的indexPath值 - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSUInteger row = [indexPath row]; if (row == 0)  return nil; return indexPath; }   - (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]; }   //設置行的高度 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 40; } NavigationController 推出push 推出pop [self.navigationController pushViewController:_detailController animated:YES]; [self.navigationController popViewControllerAnimated:YES];   Debug: NSLog(@"%s %d", __FUNCTION__, __LINE__);   點擊textField外的地方回收鍵盤 先定義一個UIControl類型的物件,在上面可以添加觸發事件,令SEL實踐為回收鍵盤的方法,最後將UIControl的實例加到當前View上。 UIControl *m_control = [[UIControl alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [m_control addTarget:self action:@selector(keyboardReturn) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:m_control];   - (void) keyboardReturn { [aTextField resignFirstResponder]; }   鍵盤覆蓋輸入框 當鍵盤調出時將輸入框覆蓋時,可以用下方法: - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { [self.view setFrame:CGRectMake(0, -100, 320, 480) ]; return YES; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { [self.view setFrame:CGRectMake(0, 0, 320, 480)]; return YES; } 當準備輸入時,將視圖的位置上調100,這樣鍵盤就不能覆蓋到輸入框。   當依賴注入方法不好使時,可以在AppDelegate內申明一個全局的控制器實例_anotherViewController,在另一個需要使用_anotherViewController的地方定義以下委託方法,使用共用的UIApplication實例來獲取該委託的引用 SomeAppDelegate *appDelegate = (SomeAppDelegate *)[[UIApplication sharedApplication] delegate]; _anotherViewController = appDelegate._anotherViewController; UIViewController內建Table View 純代碼在UIViewController控制器內建Table View @interface RootViewController : UIViewController { NSArray *timeZoneNames; } @property (nonatomic,retain) NSArray *timeZoneNames; @end   (void) loadView { UITableView *tableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] style: UITableViewStylePlain]; tableView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingWidth); tableView.delegate = self; tableView.dataSource = self; [tableView reloadData];   self.view = tableView; [tableView release]; }     將plist檔中的資料賦給陣列 NSString *thePath = [[NSBundle mainBundle] pathForResource:@"States" ofType:@"plist"]; NSArray *array = [NSArray arrayWithContentsOfFile:thePath];   UITouch 手指的觸摸範圍:64X64   #pragma mark - #pragma mark Touch Events   - (void)touchesBegan:(NSSet *) touches withEvent:(UIEvent *) event { originFrame = bookCover.frame; NSLog(@"%s %d", __FUNCTION__,__LINE__);   if ([touches count] == 2) { NSArray *twoTouches = [touches allObjects]; UITouch *firstTouch = [twoTouches objectAtIndex:0]; UITouch *secondTouch = [twoTouches objectAtIndex:1]; CGPoint firstPoint = [firstTouch locationInView:bookCover]; CGPoint secondPoint = [secondTouch locationInView:bookCover];   CGFloat deltaX = secondPoint.x - firstPoint.x; CGFloat deltaY = secondPoint.y - firstPoint.y; initialDistance = sqrt(deltaX * deltaX + deltaY * deltaY ); frameX = bookCover.frame.origin.x; frameY = bookCover.frame.origin.y; frameW = bookCover.frame.size.width; frameH = bookCover.frame.size.height; NSLog(@"%s %d", __FUNCTION__,__LINE__); } }   - (void)touchesMoved:(NSSet *) touches withEvent:(UIEvent *) event {   if([touches count] == 2) { NSLog(@"%s %d", __FUNCTION__,__LINE__);   NSArray *twoTouches = [touches allObjects]; UITouch *firstTouch = [twoTouches objectAtIndex:0]; UITouch *secondTouch = [twoTouches objectAtIndex:1];   CGPoint firstPoint = [firstTouch locationInView:bookCover]; CGPoint secondPoint = [secondTouch locationInView:bookCover];   CGFloat deltaX = secondPoint.x - firstPoint.x; CGFloat deltaY = secondPoint.y - firstPoint.y; CGFloat currentDistance = sqrt(deltaX * deltaX + deltaY * deltaY );   if (initialDistance == 0) { initialDistance = currentDistance; } else if (currentDistance != initialDistance) { CGFloat changedDistance = currentDistance - initialDistance; NSLog(@"changedDistance = %f",changedDistance); [bookCover setFrame:CGRectMake(frameX - changedDistance / 2, frameY - (changedDistance * frameH) / (2 * frameW), frameW + changedDistance, frameH + (changedDistance * frameH) / frameW)]; } } }   - (void)touchesEnded:(NSSet *) touches withEvent:(UIEvent *) event { UITouch *touch = [touches anyObject];   UITouch雙擊圖片變大/還原 if ([touch tapCount] == 2) { NSLog(@"%s %d", __FUNCTION__,__LINE__);   if (!flag) { [bookCover setFrame:CGRectMake(bookCover.frame.origin.x - bookCover.frame.size.width / 2, bookCover.frame.origin.y - bookCover.frame.size.height / 2, 2 * bookCover.frame.size.width, 2 * bookCover.frame.size.height)]; flag = YES; } else { [bookCover setFrame:CGRectMake(bookCover.frame.origin.x + bookCover.frame.size.width / 4, bookCover.frame.origin.y + bookCover.frame.size.height / 4, bookCover.frame.size.width / 2, bookCover.frame.size.height / 2)]; flag = NO; } } } Get the Location of Touches (CGPoint)locationInView:(UIView *)view (CGPoint)previousLocationInView:(UIView *)view view window   Getting Touch Attributes tapCount(read only) timestamp(read only) phase(read only)   Getting a Touch Object's Gesture Recognizers gestureRecognizers   Touch Phase UITouchPhaseBegan UITouchPhaseMoved UITouchPhaseStationary UITouchPhaseEnded UITouchPhaseCancelled   從Plist裏讀內容 NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"book" ofType:@"plist"]; NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; NSString *book = [dictionary objectForKey:bookTitle]; [textView setText:book];   (void) initialize { NSUserDefaults = [NSUserDefaults standardUserDefaults]; NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"YES" forKey:@"DeleteBackup"]; [defaults registerDefaults:appDefaults]; }   To get a value of a default, use the valueForKey: method: [[theDefaultsController values] valueForKey:@"userName"]; To set a value for a default, use setValue:forKey: [[theDefaultsController values] setValue:newUserName forKey:@"userName"];   [[NSUserDefaults standardUserDefaults] setValue:aVale forKey:aKey]; [[NSUserDefaults standardUserDefaults] valueForKey:aKey];   獲取Documents目錄 NSArray *paths = NSSearchPathForDictionariesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filename = [documentsDirectory stringByAppendingPathComponent:@"theFile.txt"];   獲取tmp目錄 NSString *tempPath = NSTemporaryDirectory(); NSString *tempFile = [tempPath stringByAppendingPathComponent:@"tempFile.txt"];   [[NSUserDefaults standardUserDefaults] setObject:data forKey:@"someKey"]; [[NSUserDefaults standardUserDefaults] objectForKey:aKey]; 自定義NavigationBar navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; [navigationBar setBarStyle:UIBarStyleBlackOpaque];   myNavigationItem = [[UINavigationItem alloc] initWithTitle:@"Setting"]; [navigationBar setItems:[NSArray arrayWithObject:myNavigationItem]]; [self.view addSubview:navigationBar];   backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(back)]; myNavigationItem.leftBarButtonItem = backButton;     利用Safari打開一個鏈結 NSURL *url = [NSURL URLWithString:@"http://www.cnblogs.com/tracy-e/"]; [[UIApplication sharedApplication] openURL:url];   利用UIWebView顯示pdf檔、網頁。。。 webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [webView setDelegate:self]; [webView setScalesPageToFit:YES]; [webView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; [webView setAllowsInlineMediaPlayback:YES]; [self.view addSubview:webView]; NSString *pdfPath = [[NSBundle mainBundle] pathForResource:@"ojc" ofType:@"pdf"]; NSURL *url = [NSURL fileURLWithPath:pdfPath]; NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5]; [webView loadRequest:request];     [myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString: @"http://www.cnblogs.com/tracy-e/"]]];   NSString *errorString = [NSString stringWithFormat:@"
An Error Occurred:
%@
",error]; [myWebView loadHTMLString:errorString baseURL:nil];   //Stopping a load request when the view is to disappear - (void)viewWillDisappear:(BOOL)animate{ if ([myWebView loading]){ [myWebView stopLoading]; } myWebView.delegate = nil; [UIApplication shareApplication].networkActivityIndicatorVisible = NO; }   漢字轉碼 NSString *oriString = @"\u67aa\u738b"; NSString *escapedString = [oriString stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];     Checking for background support on earlier versions of iOS UIDevice *device = [UIDevice currentDevice]; BOOL backgroundSupported = NO; if ([device respondsToSelector:@selector(isMultitaskingSupported)]){ backgroundSupported = device.multitaskingSupported; }   Being a Responsible,Multitasking-Aware Application # Do not make any OpenGL ES calls from your code. # Cancel any Bonjour-related services before being suspended. # Be prepared to handle connection failures in your network-based sockets. # Save your application state before moving to the background. # Release any unneeded memory when moving to the background. # Stop using shared system resources before being suspended. # Avoid updating your windows and views. # Respond to connect and disconnect notification for external accessories. # Clean up resource for active alerts when moving to the background. # Remove sensitive information from views before moving to the background. # Do minimal work while running in the background.   Handing the Keyboard notifications //Call this method somewhere in your view controller setup code - (void) registerForKeyboardNotifications{   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardDidHideNotification object:nil];   }   //Called when the UIKeyboardDidShowNotification is sent - (void)keyboardWasShown:(NSNotification *) aNotification{ if(keyboardShown) return; NSDictionary *info = [aNotification userInfo];   //get the size of the keyboard. NSValue *aValue = [info objectForKey:UIKeyboardFrameBeginUserInfoKey]; CGSize keyboardSize = [aValue CGRectValue].size;   //Resize the scroll view CGRect viewFrame = [scrollView frame]; viewFrame.size.height -= keyboardSize.height;   //Scroll the active text field into view CGRect textFieldRect = [activeField frame]; [scrollView scrollRectToVisible:textFieldRect animated:YES];   keyboardShown = YES; }   //Called when the UIKeyboardDidHideNotification is sent - (void)keyboardWasHidden:(NSNotification *) aNotification{ NSDictionary *info = [aNotification userInfo];   //Get the size of the keyboard. NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGSize keyboardSize = [aValue CGRectValue].size;   //Reset the height of the scroll view to its original value CGRect viewFrame = [scrollView Frame]; viewFrame.size.height += keyboardSize.height; scrollView.frame = viewFrame;   keyboardShown = NO; }   點擊鍵盤的next按鈕,在不同的textField之間換行 //首先給不同的textField賦不同的且相鄰的tag值 - (BOOL)textFieldShouldReturn:(UITextField *)textField { if ([textField returnKeyType] != UIReturnKeyDone) { NSInteger nextTag = [textField tag] + 1; UIView *nextTextField = [[self tableView] viewWithTag:nextTag]; [nextTextField becomeFirstResponder]; } else { [textField resignFirstResponder]; } return YES; }   Configuring a date formatter - (void)viewDidLoad { [super viewDidLoad]; dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setGeneratesCalendarDates:YES]; [dateFormatter setLocale:[NSLocale currentLocale]]; [dateFormatter setCalendar:[NSCalendar autoupdatingCurrentCalendar]]; [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]]; [dateFormatter setDateStyle:NSDateFormatterShortStyle]; DOB.placeholder = [NSString stringWithFormat:@"Example: %@",[dateFormatter stringFromDate:[NSDate date]]]; }   - (void)textFieldDidEndEditing:(UITextField *)textField{ [textField resignFirstResponder]; if ([textField.text isEqualToString:@""]) return; switch (textField.tag){ case DOBField: NSDate *theDate = [dateFormatter dateFromString:textField.text]; if (theDate) [inputDate setObject:theDate forKey:MyAppPersonDOBKey]; break; default: break; } }    tableView的cell高度 tableView的cell高度除了在delegate中指定外,還可以在任意位置以[tableView setRowHeight:44]的方式指定   [[self
本文档为【ios_dev_notes】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_046179
暂无简介~
格式:doc
大小:875KB
软件:Word
页数:54
分类:互联网
上传时间:2013-01-09
浏览量:15