1.将UIColor转换为RGB值
- (void)viewDidLoad
{
[superviewDidLoad];
NSMutableArray *mutableArray = [selftheUIColorToRGB:[UIColorredColor]]; //得到红色的RGB数组
NSLog(@"%@",mutableArray);
}
- (NSMutableArray *)theUIColorToRGB:(UIColor *)color
{
NSMutableArray *RGBArray = [[NSMutableArrayalloc]init];
NSString *RGBString = nil;
NSString *RGBValue = [NSStringstringWithFormat:@"%@",color];
NSArray *threeArray = [RGBValue componentsSeparatedByString:@" "];
NSLog(@"~~~~%@",RGBValue);
NSLog(@"____%@",threeArray);
int r = [[threeArray objectAtIndex:1]intValue] *255;//获取红色值
RGBString = [NSStringstringWithFormat:@"%d",r];
[RGBArrayaddObject:RGBString];
int g = [[threeArray objectAtIndex:2]intValue] *255;//获取绿色值
RGBString = [NSStringstringWithFormat:@"%d",g];
[RGBArrayaddObject:RGBString];
int b = [[threeArray objectAtIndex:3]intValue] *255;//获取蓝色值
RGBString = [NSStringstringWithFormat:@"%d",b];
[RGBArrayaddObject:RGBString];
return [RGBArray autorelease];//返回保存RGB的数组
}
PS:componentsSeparatedByString方法说明:即返回给定分割的数组,例如:
NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];
produces an array { @"Norman", @"Stanley", @"Fletcher" }.
2.基本的横竖屏切换实现
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation //允许切换的方向
{
if(interfaceOrientation==UIDeviceOrientationPortrait||interfaceOrientation==UIDeviceOrientationPortraitUpsideDown)
{
//实现代码,通常要改变方向参数、背景图、各控件位置和尺寸、
}
else{
//手机改变为纵向,做出相应改变
}
returnYES;
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
//方向改变时触发的代理
{
if (toInterfaceOrientation ==UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
//竖向,改变同上
}elseif (toInterfaceOrientation ==UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==UIInterfaceOrientationLandscapeRight) {
//横向,改变同上
}
}
3.显示完UIAlertView后自动消失
无意中发现的好贴,思路很好,可以灵活运用NSTimer实现其它功能,分享学习下。
UIAlertView弹出后2s让其自动消失,两种方法:
(1)结合NSTimer
UIAlertView baseAlert = nil;
- (void) performDismiss: (NSTimer *)timer
{
[baseAlert dismissWithClickedButtonIndex:0 animated:NO];//important
[baseAlert release];
baseAlert = NULL;
}
- (void) presentSheet
{
baseAlert = [[UIAlertView alloc]
initWithTitle:@"Alert" message:@"\nMessage Message Message "
delegate:self cancelButtonTitle:nil
otherButtonTitles: nil];
[NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector: @selector(performDismiss:)
userInfo:nil repeats:NO];
[baseAlert show];
}
(2)使用PerformSelector:withObject:afterDelay:方法
- (void) dimissAlert:(UIAlertView *)alert
{
if(alert)
{
[alert dismissWithClickedButtonIndex:[alert cancelButtonIndex] animated:YES];
[alert release];
}
}
- (void)showAlert{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title" message:@"message" delegate:nil
cancelButtonTitle:nil otherButtonTitles:nil];
[alert show];
[self performSelector:@selector(dimissAlert:) withObject:alert afterDelay:2.0];
}
原址:http://www.cocoachina.com/bbs/read.php?tid=71500&fpage=30
4.横向UITableView的实现
github开源demo:https://github.com/alekseyn/EasyTableView
5.@synchronized的理解
@synchronized(self) 理解为访问互斥
(1)是某个对象实例内,@synchronized(){}可以防止多个线程同时访问这个对象实例的synchronized方法(如果一个对象实例有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法,其它线程不能同时访问这个对象实例中任何一个synchronized方法)。这时,不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法。
(2)synchronized关键字是不能继承的,也就是说,子类的方法@synchronized (){} 在继承类中并不自动是@synchronized (){},继承类需要显示指定它的某个方法为synchronized方法;
6.存储图片到相册
UIImageWriteToSavedPhotosAlbum(storeImage,self,nil,nil); //存储图片到手机相册API
7.遍历方法的运用
当遍历某一容器时,不能对该容器的内容进行改动。
8.如何使应用设置到NewsStand(报刊杂志)
在info.plist文件里添加选项:Application presents contents in Newsst Boolean Yes
9.contentsize、contentoffset、contentInset的区别
contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。
contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480
contentInset是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示