ios 小技巧

作者: Gyuanhang | 来源:发表于2018-01-11 16:03 被阅读0次

    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 小技巧

        本文链接:https://www.haomeiwen.com/subject/fyxtoxtx.html