一、
经验一:控件中文本框的字体居中
一般字体居中直接在xib界面中修改参数即可,但是像tableView等控件中加入的文本,就不能在xib中轻松的修改了。这时,就需要下面的语句:
label.textAlignment = UITextAlignmentCenter; |
这样,对应文本就可以居中了。
经验二:加载和删除页面
对于有多个页面的的程序(基本都是),这个经验是最基本的。
在需要加载新页面的地方放入下面语句即可加载页面:
[self.view addSubview:加载的页面.view]; |
删除页面时用下面语句:
[需要删除的页面.view removeFromSuperview]; |
注意,如果是要删除页面自身,则用:
[self.view removeFromSuperview]; |
并且注意,这个时候上级页面不能已经release了本页面。
经验三:修改导航控制器上导航按钮的文字
一般用导航控制器加载新页面后,导航按钮显示的文字是上个页面的名称。但是领导要求将文字改为“返回”,好吧,那就这样改:
UIBarButtonItem *backbutton = [[UIBarButtonItemalloc]init]; backbutton.title = @"返回"; self.navigationItem.backBarButtonItem = backbutton; [backbutton release]; |
其实,导航按钮就是self.navigationItem.backBarButtonItem,我们只是自己做了一个显示着“返回”的按钮来替换了它。
经验四:在改导航控制器上增加新的导航按钮
一般导航页面中会需要增加按钮,这样实现:
self.navigationItem.rightBarButtonItem = BARBUTTON(@"新按钮",@selector(createClass)); |
建议平常不要修改leftBarButtonItem,因为它基本上是留给backBarButtonItem用的。
经验五:隐藏tableView的搜索栏
有很多iphone程序,它们的tableView中虽然加载了搜索栏,但是一开始是隐藏的,将列表向下拉,它才会显示出来。如何实现这一功能呢?只需要用下面的语句:
[self.tableViewsetContentOffset:CGPointMake(0.0, 44.0) animated:NO]; |
其实这个语句就是把tableView的页面坐标重新设置一下。还有,如果需要动画效果,设置animated:YES。
经验六:修改控件中的控件
程序里有个searchBar,领导觉得里面的“取消”按钮变为“搜索”按钮更合适,这个按钮就是控件中的控件。可以尝试这样修改:
for(id cc in [searchBsubviews]){ if([cc isKindOfClass:[UIButtonclass]]) { UIButton *btn = (UIButton *)cc; [btn setTitle:@"搜索" forState:UIControlStateNormal]; } } |
这是一个通用的技巧,并且这个技巧可以在很多地方用到。
现在领导需要让searchBar进行搜索时,键盘的“search”按钮一开始就激活。修改一下上面代码就可以做到:
for(id cc in [searchBsubviews]){ if([cc isKindOfClass:[UITextFieldclass]]) { UITextField *txt=(UITextField*)cc; txt.enablesReturnKeyAutomatically=NO; } } |
经验七:延时
哈哈,这个就是xcode中的delay函数:
[NSThread sleepForTimeInterval:0.2];//延时0.2秒 |
不过对于现在交互式很强的面向界面的程序,建议少用它,而用下面“经验八”提到的方法。
经验八:NSTimer定时器
下面是定时器的事例,handleTimer方法可以自行定义。在需要的地方创建timer即可,handleTimer就可以每0.5秒执行一次。
需要定时处理的函数放在这:
- (void) handleTimer: (NSTimer *) timer { //在这里进行处理 } |
定义的地方:
NSTimer *timer; timer = [NSTimer scheduledTimerWithTimeInterval: 0.5 target: self selector: @selector(handleTimer:) userInfo: nil repeats: YES]; |
用[timer fire]可以直接调用handleTimer。用[timer invalidate]可以让计时器停止计时,注意,下次计时需要重新设定计时器。