iOS开发过程中的心得 (一)关于UITableView 1.任意设置Cell选中状态的背景色: UIView *bgView = [[UIView alloc] init]; bgView.backgroundColor = [UIColor orangeColor]; self.selectedBackgroundView = bgView; [bgView release]; 该方法设置的是纯色, 也可以使用任何图片,把selectedBackgroundView设成UIImageView。 新年祝福网页 2.如果Table中有控件,这里以switch为例(适合其它可修改值的各种控件),要在switch的UIControlEventValueChanged事件的处理方法里把值记录下来。以下方法是不可取的:在执行的最后把所有cell遍历一遍,处理各控件的值。因为没显示出来的cell,是取不到的,当然也就取不到该cell里的控件。所以正确的做法是,在控件可见时,如果值变了,立即处理。当然,如果你的Cell少,不会出现隐藏的情况就随便了。 3.方法flashScrollIndicators:这个很有用,闪一下滚动条,暗示是否有可滚动的内容。可以在ViewDidAppear或[table reload]之后调用。
4.点击Cell中的按钮时,如何取所在的Cell: -(void)OnTouchBtnInCell:(UIButton *)btn { CGPoint point = btn.center; point = [table convertPoint:point fromView:btn.superview]; NSIndexPath* indexpath = [table indexPathForRowAtPoint:point]; UITableViewCell *cell = [table cellForRowAtIndexPath:indexpath]; ... //也可以通过一路取btn的父窗口取到cell,但如果cell下通过好几层subview才到btn,就要取好几次 superview,所以我用上面的方法,比较通用。这种方法也适用于其它控件。 }
(二)设置线宽,如果是retina屏,lineWidth设为1,实际显示的宽度是2个像素,这里进行一下处理:
#define SETLINEWIDTH(ctx,w) CGContextSetLineWidth(ctx, w/[UIScreen mainScreen].scale) (三)_cmd:表示该方法的selector,可以赋值给SEL类型的变量,可以做为参数传递。 例如一个显示消息的方法: -(void)ShowNotifyWithString:(NSString *)notifyString fromMethod:(SEL) originalMethod; originalMethod就是调用这个方法的selector。 调用: NSString *stmp = @"test"; [self ShowNotifyWithString:stmp fromMethod:_cmd]; 如何记录当前方法名称: NSLog(NSStringFromSelector(_cmd)); (四)在CGContext中输出汉字:CGContextShowTextAtPoint是不支持汉字的,需要用NSString的drawAtPoint或drawInRect方法 (五)一个不停震动的方法: // 定义一个回调函数,震动结束时再次发出震动 void MyAudioServicesSystemSoundCompletionProc (SystemSoundID ssID,void *clientData) { BOOL* iShouldKeepBuzzing = clientData;
[1] [2] [3] [4] [5] [6] 下一页
|