ios 小技巧

1.//获取view对应的控制器

- (UIViewController*)viewController {

 for (UIView* nextVC = [self.view superview]; nextVC; nextVC = nextVC.superview) {

 UIResponder* nextResponder = [nextVC nextResponder];

 if ([nextResponder isKindOfClass:[UIViewController class]]) {

 return (UIViewController*)nextResponder;

        }

    }

 return nil;  

}

//获取当前屏幕显示的viewcontroller  

- (UIViewController *)getCurrentVC  

{  

UIViewController *result = nil;  


UIWindow * window = [[UIApplication sharedApplication] keyWindow];  

if (window.windowLevel != UIWindowLevelNormal)  

    {  

NSArray *windows = [[UIApplication sharedApplication] windows];  

for(UIWindow * tmpWin in windows)  

        {  

if (tmpWin.windowLevel == UIWindowLevelNormal)  

            {  

                window = tmpWin;  

break;  

            }  

        }  

    }  


UIView *frontView = [[window subviews] objectAtIndex:0];  

id nextResponder = [frontView nextResponder];  


if ([nextResponder isKindOfClass:[UIViewController class]])  

        result = nextResponder;  

else  

result = window.rootViewController;  


return result;  

}  

获取当前屏幕中present出来的viewcontroller

- (UIViewController *)getPresentedViewController  

{  

UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;  

UIViewController *topVC = appRootVC;  

if (topVC.presentedViewController) {  

topVC = topVC.presentedViewController;  

    }  


return topVC;  


2.点击tableViewCell上按钮获取cell根据btn.superView.superView是不是UItableViewCell

3.tableViewCell分割线

1)巧妙利用TableView的背景作为分割线—万能方式

这个方式的巧妙之处在于,保持每个cell的位置不变,也就是坐标仍然位置系统自动计算好的,调整cell的高度,让后边的tableView露出来,利用tableView的背景色作为分割线。

关键点:tableView的cell,在初始化的时候frame就已经全部计算好了,当cell即将显示的时候会调用setFrame方法来给cell赋值,所以,我们就可以重写setFrame方法拦截,修改frame里面的height,达到目

/重写cell 的 setFrame方法

-(void)setFrame:(CGRect)frame

{

    //只修改高度

    frame.size.height-=1;

    //调用系统方法设置

    [super setFrame:frame];

}

2)

//第一步:

//UITableView去掉自带系统的分割线

_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;


//第二步:

//在自定义的UITableViewCell里重写drawRect:方法

#pragma mark - 绘制Cell分割线

- (void)drawRect:(CGRect)rect {


    CGContextRef context = UIGraphicsGetCurrentContext();

  //  CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);

    //CGContextFillRect(context, rect);


    //上分割线,

    CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0green:198/255.0blue:198/255.0alpha:1].CGColor);

    CGContextStrokeRect(context, CGRectMake(0, 0, rect.size.width, 1));


    //下分割线

    CGContextSetStrokeColorWithColor(context, [UIColor colorWithRed:198/255.0green:198/255.0blue:198/255.0alpha:1].CGColor);

    CGContextStrokeRect(context, CGRectMake(0, rect.size.height, rect.size.width, 1));

你可能感兴趣的:(ios 小技巧)