1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用)。
其实在代码里还是可以设置的,那就是删除背景view
[[self.searchBar.subviews objectAtIndex:0] removeFromSuperview];
2,NSDate:
[注意]在开发中,如果使用年月日,用NSDateFormatter setFormat :@"yyyy-MM-dd",如果是使用小时和分钟,设置为:"HH:mm",切记不要设置“HH-mm”,这样会出错的。
举例:
//创建一个时间对象
NSData * date = [NSDate date];
//打印时间
NSLog(@"today is %@",date);
//再获取的时间date减去24小时的时间(昨天的这个时候)
NSDate *yesterday = [NSDate dateWithTimeIntervalSinceNow:-(24*60*60)];
NSLog(@"yesterday is %@",yesterday);//打印昨天的时间
/*字符串换成时间*/
//设置一个字符串的时间
NSString *datestring = [NSString stringWithFormat:@"1999-09-03"];
//想要设置自己想要的格式,可以用nsdateformatter这个类,这里是初始化
NSDateFormatter * dm = [[NSDateFormatter alloc]init];
//指定输出的格式 这里格式必须是和上面定义字符串的格式相同,否则输出空
[dm setDateFormat:@"yyyy-MM-dd"];
//把字符串的时间转换成Date对象,用dateFromString方法
NSDate * newdate = [dm dateFromString:datestring];
//输出
NSLog(@"newdate is %@",newdate);
/*把时间转换成字符串*/
//把Date对象转换成String对象 用stringFromDate方法
NSString * datestring2 = [dm stringFromDate:newdate];
//打印
NSLog(@"datestring2 is %@",datestring2);
3,如果使用 UTTabviewCell,设置其accessory样式为:Detail Disclosure ,就是在每一个cell右边设置一个detail button。如果这样的操作是使用storyboard,进行的,它会要求你给每一个你cell设置indentifier,然后你会在以下方法内设置重用indentfier,别忘记加上一句话,否则编译运行时可能会弹出: cell未实例化
例子看网站上的。
4,在开发项目中,有时有这样的需求:运行程序,登陆界面是一个自由的ViewController,只是摆放几个TextField和button,点击后跳转到孩子选择或其它选择界面,点击选项后进入我们的主界面:这个时候,在登陆界面作跳转时,会有好多的方法,如果使用storyboard,就比较方便了,设置一个segue,跳转代码中:代码看网站上的
[self PerformSegueWithIdentifier:@"targetViewController",self]; 就可以了,可是我想实例化想要跳转的控制器,然后设置某一属性的值,这样跳转后控制器获取那个属性,就会得到值了,可是这样做会有一个问题:
主界面控制器如果使用了navigatorViewController,并且是其RootViewController,等到在主界面设置功能,点击某一功能,想push到一个新页面时,问题就来了,你会发现毫无反应,没有报错,只是segue无法跳转。后来终于找到原因:就是我在登陆控制器跳转时没有使用segue的方法,而是用代码self.storyboard,加载一个新类,具体原理目前还没有搞明白,先把出问题的代码记录下来,回头补之:看网站上的
代码这样做,会导致其后无法使用navigatorViewController做push跳转
5,(1010更新)开发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null~,然后我们把此值赋值给NSArray,NSdictionary,或是NSString,然后我们会判断此值为null时,所做的处理,而通常惯性思维判断时我们都会写:if(dict == nil)或是if(dict == Nil)或是if(dict == NULL)再或是if(dict isEqual nil),我们发现,都不好用,根本没有起到判断的作用~后来我才发现,原来不能这样来判断。
6,给uiview设置圆角样式只需在加载时,添加这样的话就可以了:testView.layer.cornerRadius = 6; testView.layer.masksToBounds = YES;注意,需要 import导入,否则,不能识别cornerRadius和masksToBounds。
uiview设置背景图片:
[theMainView setBackgroundColor: [UIColor colorWithPatternImage: [UIImage imageNamed: @"bg.png"]]];
imageName 缓存,下面方法不缓存
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"default" ofType:@"jpeg"];
UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:thePath"];
controller.productImg.image = prodImg;
[prodImg release];
7,隐藏键盘的两种方法
1-1Did End On Exit 调用下面事件当点击键盘return得时候就会隐藏键盘
- (IBAction)textFieldShouldReturn:(UITextField *)textField {
//[sender resignFirstResponder];
if (textField == chi) {
[chi resignFirstResponder];
double m=[chi.textdoubleValue]/3.003;
double f=m *3.2808;
meter.text=[[NSStringalloc] initWithFormat:@"%.4f",m];
feet.text=[[NSStringalloc] initWithFormat:@"%.4f",f];
}
if (textField == meter) {
[meter resignFirstResponder];
}
if (textField == feet) {
[feet resignFirstResponder];
}
}
1-2 点击屏幕得时候隐藏键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch=[[event allTouches] anyObject];
if (touch.tapCount >=1) {
[chi resignFirstResponder];
[meter resignFirstResponder];
[feet resignFirstResponder];
}
}
1-2的方法相当于屏幕任何位置的点击事件(除了各组件的点击处)可以在这个方法里执行要隐藏或remove的view。
8,UITextField密文显示输入内容
9,通过系统自带的NSPredicate使用正则表达式。(在TextField中)
[java] view plaincopy
NSString *regex =[NSString stringWithFormat:@"^1(3[4-9]|5[012789]|8[2378]|47)\\d{8}$"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
BOOL isMatch = [predicate evaluateWithObject:editPhoneField.text];
10,项目设置应用程序显示名称:
11更改Xcode的缺省公司名
12,在有uinavigation,uitoolbar的情况下,如何添加一个全屏的 uiview (一般是作为显示一个进度框,任何区域无法触摸而使用)
只需要在要添加view时侯这样写:
[java] view plaincopy
[[UIApplication sharedApplication].keyWindow addSubview:waitingview];
这样,直接把waitingview添加到了uiWindow上,而不是self.view上。再次运行,会发现屏幕全部区域都已经遮挡住了。
13,使用了storyboard,运行程序模拟器显示黑屏,这是由于,操作不当,获取点击了例如 navigationViewController属性种的in init ViewController选项,然后重置了当前进入程序后的首界面,解决办法就是选择入口界面,属性种重新勾选此选项。
14,如何给uiNavigationBar 设置背景颜色或是自定义图片?
在项目中添加如下代码:
//设置背景颜色:
[java] view plaincopy
UIColor *itemcolor = [UIColor colorWithRed:100.0f/255.0f green:176.0f/255.0f blue:0.0f/255.0f alpha:0.3f];
self.navigationController.navigationBar.tintColor = itemcolor;
//设置自定义的图片:
[java] view plaincopy
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbg.png"] forBarMetrics:UIBarMetricsDefault];
5.0以上,api有了上面setBackgroundImage的方法,可以直接设置,如果项目需要适配5.0以下版本的设备,最好加一个判读,是否有此函数,有则设置,没有就通过drawRect方法设置。
另外:设置背景图片无法匹配backButton或rightButtonItem,所以返回按钮或右边自定义的Bar button Item需要自行处理。
15,如何给uiview设置背景图片?
在storyboard或xib中,添加一个uiview,属性设置栏一般都有设置背景颜色,样式,透明度alpha,但是没有提供设置image,只有在imageview中才有,所以,要想设置背景图片,只能在代码中设置,如下:
[java] view plaincopy
[leftNaviView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"pabb_leftnaviview_bg.png"]]];
这样,背景就可以变成想要的图片了。另外,设置大小:
[java] view plaincopy
[leftNaviView setFrame:CGRectMake(9, 60, 120, 250)];
16如何在项目用代码打开AppStore软件(也就是访问appstore)
//以下是通过id打开此软件的评价
// int m_appleID = 576337094;
// NSString *str = [NSString stringWithFormat:
// @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%d",
// m_appleID ];
//以下是通过appstore链接到自己应用在商店的位置
NSString *url = [NSString stringWithFormat:@"http://itunes.apple.com/cn/app/huo-xing-she-xin-dian/id549425594?l=en&mt=8"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
把以上代码直接拷贝到想要实现点击跳转的操作方法内就可以了,通过appID,随意可以通过appstore打开应用,直接用url就可以链接到了。很简单,一般都用在检查更新的时候。
17,如何代码实现点击http://www.kaka.com或400-800-400或message实现跳转safari,phone或message?
只需要在相应的代码中写入:
1、调用 电话phone
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://4008008288"]];
2、调用自带 浏览器 safari
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.abt.com"]];
3、调用 自带mail
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@abt.com"]];
4、调用 SMS
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];
5,跳转到系统设置相关界面
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
其中,发短信,发Email的功能只能填写要发送的地址或号码,无法初始化发送内容,如果想实现内容的话,还需要更复杂一些,实现其各自的委托方法。
若需要传递内容可以做如下操作:
加入:MessageUI.framework
代码看网站上的。
18,注册设置应用程序访问用户手机发送推送消息,(弹出Alertview)
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
19,轻松自定义复选框按钮
-(void)checkboxClick:(UIButton *)btn
{
btn.selected = !btn.selected;
}
- (void)viewDidLoad {
UIButton *checkbox = [UIButton buttonWithType:UIButtonTypeCustom];
CGRect checkboxRect = CGRectMake(135,150,36,36);
[checkbox setFrame:checkboxRect];
[checkbox setImage:[UIImage imageNamed:@"checkbox_off.png"] forState:UIControlStateNormal];
[checkbox setImage:[UIImage imageNamed:@"checkbox_on.png"] forState:UIControlStateSelected];
[checkbox addTarget:self action:@selector(checkboxClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:checkbox];
}
20,程序中获取软件的版本号和app名称
21,如何使屏幕一直保持唤醒状态?(就是不自动黑屏)
比如,如果我们做一个播放视频的功能时,想在播放的时候,不会自动进入屏保(黑屏)
只要在代码里加入这一行:
[java] view plaincopy
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
当然,在想要黑屏的时候还需要把它设置为NO(比如视频播放完毕时),不然屏幕会在此软件运行下一直亮着。
22,一直以来的疑问:在Xcode中,有时候在类名称后边带有M或C等标示,不知道为何意。如下图所示:
23,有关ios上屏幕旋转,view设置Frame的相关问题(ios5)。
24,Xcode编译警告和错误解决方法:
25,如何设置视图(view)在最上层?或是view1和view2交换?
26,如何隐藏UINavigationBar
27,如何限制UITextField输入长度(监听textField文本变化的事件)
28,使用ios5.0以后的一个方法自定义table View Cell
29,iOS和iPad各app图标和启动页尺寸。
iphone APP图标尺寸:57X57 高清:114X114 单位:pixel 命名:无特殊要求,最好是,app_icon 高清的要加@2x
iphone 启动页尺寸:大小最好是320X460或320X480(相当于整个屏幕尺寸) 单位:pixel 命名:Default.png
iPad APP图标尺寸:72X72 高清:144X144 单位:pixel 命名:
ipad 启动页尺寸:大小最好是768X1004或768X1024 单位:pixel 命名:Default-Portrait~ipad.png 高清:Default-Portrait@2x~ipad.png
30,如何用NSLog输出NSRange,CGRect等结构体。
NSString 中的方法:
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
如:NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
31,如何在navigationviewcontroller中,pop到之前不同的viewcontroller(push过的viewcontroller)
32,self.navigationItem.backBarButtonItem 的title设置
33,self.navigationItem和self.navigationController.navigationItem的区别
1, 不要混淆 self.navigationItem 和 self.navigationController.navigationItem ,
UINavigationItem 本身是用来 定制 ViewController自己在被导航过程中的 appearence, navigationItem是UIViewController类关于UINavigationControllerItem类别的扩展:
@interface UIViewController (UINavigationControllerItem)
@property(nonatomic,readonly,retain)UINavigationItem * navigationItem;
...
@end
所以后者 是调用 VC的所在的导航控制器导航控制器自己自己作为VC的 navigationItem,是导航的叠加。
2. UINavigationBar 继承于 UIView,隶属于整个 UINavigationController ,用来定义整个导航过程中的导航栏的颜色等其他数值,(类似于 self.tabBarController.tabBar UINavigationBar ,只需要一个设置通用的基本属性),只能通过self.navigationController.navigationBar来访问。
亦因此,定制于导航堆栈里某个VC 的时候,一般通过self.navigationItem, 比如常用的self.navigationItem.leftBarButtonItem,self.navigationItem.rightButtonItem, 同时如果自己来定制导航栏的外观的话,就要用到self.navigationItem.titleView,这个可以直接用一个 CustomView 赋值于self.navigationItem.titleView即可。
此时,如果需要,就得自己画导航过程中的返回按钮了。
34,图片模糊化处理
+(UIImage *)scale:(UIImage *)image toSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
35,NSString转换大小写的用法
iOS 6中NSString对象有些新的使用方法,可以让字符串转变成全部大写,全部小写,或者每个单词首字母大写。
NSString *str = @"mobile developer tips";
// Convert string to uppercase
NSString *upperStr = [str uppercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"upperStr: %@", upperStr);
// Convert string to caps
NSString *capStr = [upperStr capitalizedStringWithLocale:[NSLocale currentLocale]];
NSLog(@"capStr: %@", capStr);
// Convert string to lowercase
NSString *lowerStr = [capStr lowercaseStringWithLocale:[NSLocale currentLocale]];
NSLog(@"lowerStr: %@", lowerStr);
运行结果:看网站上。
36,如何获取手机硬件信息?
通过使用UIDevice:
[[UIDevice currentDevice] systemName];
[[UIDevice currentDevice] systemVersion];//os version
[[UIDevice currentDevice] uniqueIdentifier];
[[UIDevice currentDevice] model];
[[UIDevice currentDevice] name];
真机上结果:
System Name: iPhone OS
System Version: 4.2.1
Unique ID: 9b5ded78d5fa0ac96250f8b4af0e46f40b96ea6d
Model: iPhone
Name: “wwk”的 iPhone
模拟器上结果:
System Name: iPhone OS
System Version: 4.2
Unique ID: 21FFE0FF-429B-5D0B-96D2-EADCA3203260
Model: iPhone Simulator
Name: iPhone Simulator
uniqueIdentifier:iPhone通过,向几个硬件标识符和设备序列号应用内部散列算法,而生成这一标识符。
http://blog.csdn.net/qiwancong/article/details/7914923 参考
36,真机调试:could not change executable permissions错误?
虽然更改了新demo的bundle identifier和之前的identifier一样,但是真机上还保留着之前调试时的demo,所以新的工程如果使用同样的identifier真机调试,需要先把机器上原来的demo删除,再使用新工程调试。
37,判断iphone5屏幕的宏定义
38、invalid deployment target for -stdlib=libc++ (requires iOS 5.0 or later)错误
39,如何调用系统声音?【iphone 调用系统铃声与震动功能】
40,重复调用2次loadView和viewDidLoad
41,点击UIButton 无法产生触摸事件
如果在UIImageView中添加了一个按钮,你会发现在默认情况下这个按钮是无法被点击的,需要设置UIImageView的userInteractionEnabled为YES:
imageView.userInteractionEnabled = YES;
设置为YES后,UIImageView内部的按钮就可以被点击了
42,如何启动app时全屏显示Default.png(图片)
42,使用ASIHTTPRequest保存cookies
假如我的APP,第一次启动请求了登录接口并得到了Cookie,然后我把APP关了,下次启动APP,我不请求登录接口了,那上次得到的Cookie就不存在了。如果需要,那么2种方法,下次启动app,自动登入,这样能得到服务器分配给你的cookier(这一种是最好的,因为session也会过期),还有一种是你把上次登入的时候,拿到的cookier存起来,然后下次启动app的时候,手动给请求(ASIHTTP)添加cookie。
43,UITextField只有当有字符输入后,键盘右下角的搜索/返回/done/等等键才可以使用
TextField设置这个属性为YES就可以了,默认为NO
searchField.enablesReturnKeyAutomatically = YES;
44、判断是不是iPhone5