更改cell选中的背景
- //创建一个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;
//创建一个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:
- //定义一个消息中心
- //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];
- }
- }
//定义一个消息中心
//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:在什么之上的意思
- [scrollView insertSubview:searchButton aboveSubview:scrollView];
[scrollView insertSubview:searchButton aboveSubview:scrollView];
从本地加载图片
- //取得当前应用程序的束--[NSBundle mainBundle]
- //取得资源的路径
- NSString *boundle = [[NSBundle mainBundle] resourcePath];
- [web1 loadHTMLString:[NSString stringWithFormat:@"<img src='0001.png'/>"]
- baseURL:[NSURL fileURLWithPath:boundle]];
//取得当前应用程序的束--[NSBundle mainBundle]
//取得资源的路径
NSString *boundle = [[NSBundle mainBundle] resourcePath];
[web1 loadHTMLString:[NSString stringWithFormat:@"<img src='0001.png'/>"]
baseURL:[NSURL fileURLWithPath:boundle]];
从网页加载图片并让图片在规定长宽中缩小
- [cell.img loadHTMLString:
- [NSString stringWithFormat:@"<html><body><img src='% @'height='90px'width='90px'></body></html>",goodsInfo.GoodsImg]
- baseURL:nil
- ];
[cell.img loadHTMLString:
[NSString stringWithFormat:@"<html><body><img src='% @'height='90px'width='90px'></body></html>",goodsInfo.GoodsImg]
baseURL:nil
];
将网页加载到webview上通过javascript获取里面的数据,
如果只是发送了一个连接请求获取到源码以后可以用正则表达式进行获取数据
- 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]];
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
- utf8Str //
- NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];
utf8Str //
NSString *unicodeStr = [NSString stringWithCString:[utf8Str UTF8String] encoding:NSUnicodeStringEncoding];
View自己调用自己的方法:
- //黄色段为方法名,和延迟几秒执行.loginToNext:方法名称 。afterDelay:2--延长2秒调用
- [self performSelector:@selector(loginToNext) withObject:nil afterDelay:2];
//黄色段为方法名,和延迟几秒执行.loginToNext:方法名称 。afterDelay:2--延长2秒调用
[self performSelector:@selector(loginToNext) withObject:nil afterDelay:2];
显示图像:
- 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];
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:
- 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];
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左上部的状态栏显示的转动的图标指示有背景发生网络的活动。
- UIApplication* app = [UIApplication sharedApplication];
- app.networkActivityIndicatorVisible = YES;
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
动画:一个接一个地显示一系列的图象
- 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];
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
- 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"];
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.//这是如何生成一个简单的拖动图象
- 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];
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];
线程:
- 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];
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
- NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- myPlistPath = [documentsDirectory stringByAppendingPathComponent:
- [NSString
- stringWithFormat:
- @"%@.plist",
- plistName]
- ];
- [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
- NSFileManager *fileManger = [NSFileManager defaultManager];
- if ( ![fileManger fileExistsAtPath:myPlistPath] )
- {
- NSString *pathToSettingsInBundle = [[NSBundle mainBundle]
- pathForResource:plistName
- ofType:
- @"plist"];
- }
NSFileManager *fileManger = [NSFileManager defaultManager];
if ( ![fileManger fileExistsAtPath:myPlistPath] )
{
NSString *pathToSettingsInBundle = [[NSBundle mainBundle]
pathForResource:plistName
ofType:
@"plist"];
}
//Now read the plist file from Documents
- NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectoryPath = [paths objectAtIndex:0];
- NSString *path = [documentsDirectoryPath stringByAppendingPathComponent:@"myApp.plist"];
- 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
- myKey = (int)[[plist valueForKey:@"myKey"] intValue];
- myKey2 = (bool)[[plist valueForKey:@"myKey2"] boolValue];
- [plist setValue:myKey forKey:@"myKey"];
- [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.
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message: @"An Alert!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ];
- [alert show];
- [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.
- 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];
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.
- for (UIImageView *anImage in [self.view subviews])
- {
- if (anImage.tag == 1)
- {
- // do something
- }
- }