专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Iphone

Iphone惯用代码

发布时间:2010-05-30 01:05:38 文章来源:www.iduyao.cn 采编人员:星星草
Iphone常用代码

更改cell选中的背景

 

Java代码 复制代码
  1. //创建一个UIView对象    
  2. UIView *myview = [[UIView alloc] init];   
  3. //设置UIView对象的外观大小    
  4. myview.frame = CGRectMake(0032047);    
  5. //设置UIView对象的背景色。 [UIColor colorWithPatternImage:[UIImage imageNamed:@"0006.png"]] 从图片中创建颜色    
  6.   
  7. myview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"0006.png"]];    
  8. //设置cell被选中时的颜色    
  9. cell.selectedBackgroundView = myview;   
//创建一个UIView对象 
UIView *myview = [[UIView alloc] init];
//设置UIView对象的外观大小 
myview.frame = CGRectMake(0, 0, 320, 47); 
//设置UIView对象的背景色。 [UIColor colorWithPatternImage:[UIImage imageNamed:@"0006.png"]] 从图片中创建颜色 

myview.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"0006.png"]]; 
//设置cell被选中时的颜色 
cell.selectedBackgroundView = myview; 

 
 

在数字键盘上添加button:
 
 

Java代码 复制代码
  1. //定义一个消息中心    
  2. //addObserver:注册一个观察员 name:消息名称    
  3. [[NSNotificationCenter defaultCenter]    
  4.   addObserver:self    
  5.    selector:@selector(keyboardWillShow:)    
  6.     name:UIKeyboardWillShowNotification object:nil];    
  7. //定义的动作    
  8. - (void)keyboardWillShow:(NSNotification *)note {    
  9. // 创建一个自定义的UIButton对象    
  10. UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];    
  11. //设置UIButton大小的外观大小   
  12. doneButton.frame = CGRectMake(016310653);    
  13. //设置该UIButton对象在正常状态下显示的图片    
  14. [doneButton setImage:[UIImage imageNamed:@"5.png"] forState:UIControlStateNormal];    
  15. //注册事件    
  16. [doneButton addTarget:self action:@selector(addRadixPoint) forControlEvents:UIControlEventTouchUpInside];   
  17.  // locate keyboard view取得UIWindow对象    
  18. UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];UIView* keyboard;    
  19. //遍历window上的所有subview    
  20.   for(int i=0; i<[tempWindow.subviews count]; i++)    
  21.     {    
  22.        keyboard = [tempWindow.subviews objectAtIndex:i];    
  23. // keyboard view found; add the custom button to it //如果该subview是键盘,就在该键盘上添加创建的button 对象    
  24.        if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)    
  25.   [keyboard addSubview:doneButton];    
  26.     }    
  27. }    
  28.    
//定义一个消息中心 
//addObserver:注册一个观察员 name:消息名称 
[[NSNotificationCenter defaultCenter] 
  addObserver:self 
   selector:@selector(keyboardWillShow:) 
    name:UIKeyboardWillShowNotification object:nil]; 
//定义的动作 
- (void)keyboardWillShow:(NSNotification *)note { 
// 创建一个自定义的UIButton对象 
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
//设置UIButton大小的外观大小
doneButton.frame = CGRectMake(0, 163, 106, 53); 
//设置该UIButton对象在正常状态下显示的图片 
[doneButton setImage:[UIImage imageNamed:@"5.png"] forState:UIControlStateNormal]; 
//注册事件 
[doneButton addTarget:self action:@selector(addRadixPoint) forControlEvents:UIControlEventTouchUpInside];
 // locate keyboard view取得UIWindow对象 
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];UIView* keyboard; 
//遍历window上的所有subview 
  for(int i=0; i<[tempWindow.subviews count]; i++) 
    { 
       keyboard = [tempWindow.subviews objectAtIndex:i]; 
// keyboard view found; add the custom button to it //如果该subview是键盘,就在该键盘上添加创建的button 对象 
       if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES) 
  [keyboard addSubview:doneButton]; 
    } 
} 
 

 
 

正则表达式使用:


    被用于正则表达式的字串必须是可变长的,不然会出问题

 

 


将一个空间放在视图之上.above:在什么之上的意思

Java代码 复制代码
  1.     
  2. [scrollView insertSubview:searchButton aboveSubview:scrollView];   
 
[scrollView insertSubview:searchButton aboveSubview:scrollView]; 

 
 
 
 
 
从本地加载图片

Java代码 复制代码
  1. //取得当前应用程序的束--[NSBundle mainBundle]    
  2. //取得资源的路径    
  3. NSString *boundle = [[NSBundle mainBundle] resourcePath];   
  4. [web1 loadHTMLString:[NSString stringWithFormat:@"<img src='0001.png'/>"]    
  5.  baseURL:[NSURL fileURLWithPath:boundle]];    
  6.    
//取得当前应用程序的束--[NSBundle mainBundle] 
//取得资源的路径 
NSString *boundle = [[NSBundle mainBundle] resourcePath];
[web1 loadHTMLString:[NSString stringWithFormat:@"<img src='0001.png'/>"] 
 baseURL:[NSURL fileURLWithPath:boundle]]; 
 

 
 
 
 
 
从网页加载图片并让图片在规定长宽中缩小

 

Java代码 复制代码
  1. [cell.img   loadHTMLString:   
  2.           [NSString stringWithFormat:@"<html><body><img src='%  @'height='90px'width='90px'></body></html>",goodsInfo.GoodsImg]    
  3.    baseURL:nil   
  4.   ];   
  5.    
[cell.img   loadHTMLString:
          [NSString stringWithFormat:@"<html><body><img src='%  @'height='90px'width='90px'></body></html>",goodsInfo.GoodsImg] 
   baseURL:nil
  ];
 

 
 
将网页加载到webview上通过javascript获取里面的数据,
如果只是发送了一个连接请求获取到源码以后可以用正则表达式进行获取数据

C代码 复制代码
  1. 1. NSString *javaScript1 = @"document.getElementsByName('.u').item(0).value";      
  2. 2. NSString *javaScript2 = @"document.getElementsByName('.challenge').item(0).value";      
  3. 3. NSString *strResult1 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript1]];      
  4. 4. NSString *strResult2 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript2]];    
1. NSString *javaScript1 = @"document.getElementsByName('.u').item(0).value";   
2. NSString *javaScript2 = @"document.getElementsByName('.challenge').item(0).value";   
3. NSString *strResult1 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript1]];   
4. NSString *strResult2 = [NSString stringWithString:[theWebView stringByEvaluatingJavaScriptFromString:javaScript2]];  

 
 


用NSString怎么把UTF8转换成unicode

 

Java代码 复制代码
  1. utf8Str //   
  2. NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];  
utf8Str //
NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];

 
View自己调用自己的方法:

 

Java代码 复制代码
  1. //黄色段为方法名,和延迟几秒执行.loginToNext:方法名称 。afterDelay:2--延长2秒调用   
  2. [self performSelector:@selector(loginToNext) withObject:nil afterDelay:2];  
//黄色段为方法名,和延迟几秒执行.loginToNext:方法名称 。afterDelay:2--延长2秒调用
[self performSelector:@selector(loginToNext) withObject:nil afterDelay:2];

 
显示图像:

 

Java代码 复制代码
  1. CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f);   
  2. UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];   
  3. [myImage setImage:[UIImage imageNamed:@"myImage.png"]];   
  4. //opaque是否透明   
  5. myImage.opaque = YES;    
  6. [self.view addSubview:myImage];   
  7. [myImage release];  
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 109.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
//opaque是否透明
myImage.opaque = YES; 
[self.view addSubview:myImage];
[myImage release];

 

WebView:

 

Java代码 复制代码
  1. CGRect webFrame = CGRectMake(0.00.0320.0460.0);   
  2. UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];   
  3. [webView setBackgroundColor:[UIColor whiteColor]];   
  4. NSString *urlAddress = @"http://www.google.com";   
  5. NSURL *url = [NSURL URLWithString:urlAddress];   
  6. NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];   
  7. [webView loadRequest:requestObj];   
  8. [self addSubview:webView];   
  9. [webView release];  
CGRect webFrame = CGRectMake(0.0, 0.0, 320.0, 460.0);
UIWebView *webView = [[UIWebView alloc] initWithFrame:webFrame];
[webView setBackgroundColor:[UIColor whiteColor]];
NSString *urlAddress = @"http://www.google.com";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
[self addSubview:webView];
[webView release];

 

 

 

显示网络活动状态指示符
这是在iPhone左上部的状态栏显示的转动的图标指示有背景发生网络的活动。

 

Java代码 复制代码
  1. UIApplication* app = [UIApplication sharedApplication];   
  2. app.networkActivityIndicatorVisible = YES;  
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;

 
动画:一个接一个地显示一系列的图象

Java代码 复制代码
  1. NSArray *myImages = [NSArray    
  2.    arrayWithObjects:    
  3.       [UIImage imageNamed:@"myImage1.png"],   
  4.       [UIImage imageNamed:@"myImage2.png"],   
  5.                                          [UIImage imageNamed:@"myImage3.png"],   
  6.       [UIImage imageNamed:@"myImage4.gif"],   
  7.      nil];   
  8.   
  9. //创建一个UIImageView对象   
  10. UIImageView *myAnimatedView = [UIImageView alloc];   
  11. //初始化UIImageView对象的大小   
  12. [myAnimatedView initWithFrame:[self bounds]];   
  13.   
  14. //animationImages属性返回一个存放动画图片的数组   
  15. myAnimatedView.animationImages = myImages;   
  16. //浏览整个图片一次所用的时间    
  17. myAnimatedView.animationDuration = 0.25;    
  18. // 0 = loops forever 动画重复次数   
  19. myAnimatedView.animationRepeatCount = 0;    
  20.   
  21. //开始动画   
  22. [myAnimatedView startAnimating];   
  23. //把该UIImageView对象添加到view视图中   
  24. [self addSubview:myAnimatedView];   
  25. //释放   
  26. [myAnimatedView release];  
NSArray *myImages = [NSArray 
   arrayWithObjects: 
      [UIImage imageNamed:@"myImage1.png"],
      [UIImage imageNamed:@"myImage2.png"],
                                         [UIImage imageNamed:@"myImage3.png"],
      [UIImage imageNamed:@"myImage4.gif"],
     nil];

//创建一个UIImageView对象
UIImageView *myAnimatedView = [UIImageView alloc];
//初始化UIImageView对象的大小
[myAnimatedView initWithFrame:[self bounds]];

//animationImages属性返回一个存放动画图片的数组
myAnimatedView.animationImages = myImages;
//浏览整个图片一次所用的时间 
myAnimatedView.animationDuration = 0.25; 
// 0 = loops forever 动画重复次数
myAnimatedView.animationRepeatCount = 0; 

//开始动画
[myAnimatedView startAnimating];
//把该UIImageView对象添加到view视图中
[self addSubview:myAnimatedView];
//释放
[myAnimatedView release];

 


动画:显示了something在屏幕上移动。
注:这种类型的动画是“开始后不处理” -你不能获取任何有关物体在动画中的信息(如当前的位置) 。
如果您需要此信息,您会手动使用定时器去调整动画的X和Y坐标
这个需要导入QuartzCore.framework

Java代码 复制代码
  1. CABasicAnimation *theAnimation;   
  2.    theAnimation=   
  3.     [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];   
  4.   
  5. //Creates and returns an CAPropertyAnimation instance for the specified key path.   
  6. //parameter:the key path of the property to be animated   
  7.    theAnimation.duration=1;   
  8.    theAnimation.repeatCount=2;   
  9.    theAnimation.autoreverses=YES;   
  10.    theAnimation.fromValue=[NSNumber numberWithFloat:0];   
  11.    theAnimation.toValue=[NSNumber numberWithFloat:-60];   
  12.      
  13.   [view.layer addAnimation:theAnimation forKey:@"animateLayer"];  
CABasicAnimation *theAnimation;
   theAnimation=
    [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];

//Creates and returns an CAPropertyAnimation instance for the specified key path.
//parameter:the key path of the property to be animated
   theAnimation.duration=1;
   theAnimation.repeatCount=2;
   theAnimation.autoreverses=YES;
   theAnimation.fromValue=[NSNumber numberWithFloat:0];
   theAnimation.toValue=[NSNumber numberWithFloat:-60];
  
  [view.layer addAnimation:theAnimation forKey:@"animateLayer"];

 

 

 

Draggable items//拖动项目

Here's how to create a simple draggable image.//这是如何生成一个简单的拖动图象

Java代码 复制代码
  1. 1. Create a new class that inherits from UIImageView   
  2.   
  3.    @interface myDraggableImage : UIImageView    
  4.                       {    
  5.                            }   
  6.   
  7. 2. In the implementation for this new class, add the 2 methods:   
  8.   
  9.    - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event   
  10.       {   
  11.    // Retrieve the touch point 检索接触点   
  12.    CGPoint pt = [[touches anyObject] locationInView:self];   
  13.    startLocation = pt;   
  14.    [[self superview] bringSubviewToFront:self];   
  15.       }   
  16.   
  17.   
  18.   - (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event   
  19.  {   
  20.     // Move relative to the original touch point 相对以前的触摸点进行移动   
  21.     CGPoint pt = [[touches anyObject] locationInView:self];   
  22.     CGRect frame = [self frame];   
  23.     frame.origin.x += pt.x - startLocation.x;   
  24.     frame.origin.y += pt.y - startLocation.y;   
  25.     [self setFrame:frame];   
  26.  }   
  27.   
  28. 3. Now instantiate the new class as you would any other new image and add it to your view   
  29. //实例这个新的类,放到你需要新的图片放到你的视图上   
  30.   
  31.    dragger = [[myDraggableImage alloc] initWithFrame:myDragRect];   
  32.     [dragger setImage:[UIImage imageNamed:@"myImage.png"]];   
  33.     [dragger setUserInteractionEnabled:YES];  
1. Create a new class that inherits from UIImageView

   @interface myDraggableImage : UIImageView 
                      { 
                           }

2. In the implementation for this new class, add the 2 methods:

   - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
      {
   // Retrieve the touch point 检索接触点
   CGPoint pt = [[touches anyObject] locationInView:self];
   startLocation = pt;
   [[self superview] bringSubviewToFront:self];
      }


  - (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
 {
    // Move relative to the original touch point 相对以前的触摸点进行移动
    CGPoint pt = [[touches anyObject] locationInView:self];
    CGRect frame = [self frame];
    frame.origin.x += pt.x - startLocation.x;
    frame.origin.y += pt.y - startLocation.y;
    [self setFrame:frame];
 }

3. Now instantiate the new class as you would any other new image and add it to your view
//实例这个新的类,放到你需要新的图片放到你的视图上

   dragger = [[myDraggableImage alloc] initWithFrame:myDragRect];
    [dragger setImage:[UIImage imageNamed:@"myImage.png"]];
    [dragger setUserInteractionEnabled:YES];

 

线程:

 

Java代码 复制代码
  1. 1. Create the new thread:   
  2.   
  3.  [NSThread detachNewThreadSelector:@selector(myMethod)toTarget:self withObject:nil];   
  4.   
  5. 2. Create the method that is called by the new thread:   
  6.   
  7.  - (void)myMethod   
  8.  {   
  9.     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];   
  10.  *** code that should be run in the new thread goes here ***   
  11.     [pool release];   
  12.  }   
  13.   
  14.     
  15.   
  16. /***What if you need to do something to the main thread from   inside your new thread   
  17. *(for example, show a loading //symbol)? Use  *performSelectorOnMainThread.   
  18. **/  
  19.   
  20.    [self performSelectorOnMainThread:@selector(myMethod)withObject:nil waitUntilDone:false];   
  21.   
  22.   
  23.   
  24.   
  25.     
  26.   
  27.    
1. Create the new thread:

 [NSThread detachNewThreadSelector:@selector(myMethod)toTarget:self withObject:nil];

2. Create the method that is called by the new thread:

 - (void)myMethod
 {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 *** code that should be run in the new thread goes here ***
    [pool release];
 }

 

/***What if you need to do something to the main thread from   inside your new thread 
*(for example, show a loading //symbol)? Use  *performSelectorOnMainThread. 
**/

   [self performSelectorOnMainThread:@selector(myMethod)withObject:nil waitUntilDone:false];




 

 

 

 

 

// Look in Documents for an existing plist file

 

 

 

Java代码 复制代码
  1. NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);   
  2.    NSString *documentsDirectory = [paths objectAtIndex:0];   
  3.    myPlistPath = [documentsDirectory stringByAppendingPathComponent:   
  4.         [NSString    
  5.          stringWithFormat:   
  6.             @"%@.plist",   
  7.                   plistName]   
  8.      ];   
  9.    [myPlistPath retain];  
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];
   myPlistPath = [documentsDirectory stringByAppendingPathComponent:
        [NSString 
         stringWithFormat:
            @"%@.plist",
                  plistName]
     ];
   [myPlistPath retain];

 

 

 

// If it's not there, copy it from the bundle

 

Java代码 复制代码
  1.  NSFileManager *fileManger = [NSFileManager defaultManager];   
  2.   if ( ![fileManger fileExistsAtPath:myPlistPath] )   
  3. {   
  4.   NSString *pathToSettingsInBundle = [[NSBundle mainBundle]    
  5.       pathForResource:plistName    
  6.       ofType:   
  7.        @"plist"];   
  8. }  
  NSFileManager *fileManger = [NSFileManager defaultManager];
   if ( ![fileManger fileExistsAtPath:myPlistPath] )
 {
   NSString *pathToSettingsInBundle = [[NSBundle mainBundle] 
       pathForResource:plistName 
       ofType:
        @"plist"];
 }

  

 

 

 

//Now read the plist file from Documents

 

Java代码 复制代码
  1. NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);   
  2. NSString *documentsDirectoryPath = [paths objectAtIndex:0];   
  3. NSString *path = [documentsDirectoryPath stringByAppendingPathComponent:@"myApp.plist"];   
  4. NSMutableDictionary *plist = [NSDictionary dictionaryWithContentsOfFile: path];  
 NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectoryPath = [paths objectAtIndex:0];
 NSString *path = [documentsDirectoryPath stringByAppendingPathComponent:@"myApp.plist"];
 NSMutableDictionary *plist = [NSDictionary dictionaryWithContentsOfFile: path];

 

 

//Now read and set key/values

 

Java代码 复制代码
  1. myKey = (int)[[plist valueForKey:@"myKey"] intValue];   
  2.  myKey2 = (bool)[[plist valueForKey:@"myKey2"] boolValue];   
  3.  [plist setValue:myKey forKey:@"myKey"];   
  4.  [plist writeToFile:path atomically:YES];  
myKey = (int)[[plist valueForKey:@"myKey"] intValue];
 myKey2 = (bool)[[plist valueForKey:@"myKey2"] boolValue];
 [plist setValue:myKey forKey:@"myKey"];
 [plist writeToFile:path atomically:YES];

  

 

//Alerts Show a simple alert with OK button.

 

Java代码 复制代码
  1.   UIAlertView *alert = [[UIAlertView alloc]   initWithTitle:nil   message: @"An Alert!"  delegate:self  cancelButtonTitle:@"OK" otherButtonTitles:nil ];   
  2. [alert show];   
  3. [alert release];  
   UIAlertView *alert = [[UIAlertView alloc]   initWithTitle:nil   message: @"An Alert!"  delegate:self  cancelButtonTitle:@"OK" otherButtonTitles:nil ];
 [alert show];
 [alert release];

  

 

//Info button
//Increase the touchable area on the Info button, so it's easier to press.

 

Java代码 复制代码
  1. CGRect newInfoButtonRect = CGRectMake(infoButton.frame.origin.x-25,  infoButton.frame.origin.y-25,infoButton.frame.size.width+50,infoButton.frame.size.height+50);   
  2. [infoButton setFrame:newInfoButtonRect];  
 CGRect newInfoButtonRect = CGRectMake(infoButton.frame.origin.x-25,  infoButton.frame.origin.y-25,infoButton.frame.size.width+50,infoButton.frame.size.height+50);
 [infoButton setFrame:newInfoButtonRect];



 

 

 

//Detecting Subviews
//You can loop through subviews of an existing view. This works especially well if you use the "tag"

 property on your views.

 

Java代码 复制代码
  1. for (UIImageView *anImage in [self.view subviews])   
  2.  {   
  3.   
  4.  if (anImage.tag == 1)   
  5.                   {    
  6.           // do something   
  7.   
  8.               }   
  9.   
  10.  }  

 

这里也有 写道
http://www.cocoachina.com/blog/blog.php?do=showone&uid=10359&type=blog&cid=&itemid=1087

 

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: