UIView的扩展工具集

UIView.png

创建UIView类别:UIView+YY

1、View截图:

#pragma mark - Screenshot
// 截UIView整图
- (UIImage *)yy_screenCapture:(BOOL)isOpaque
{
    return [self yy_screenCapture:isOpaque margin:UIEdgeInsetsZero];
}

// 指定截View上左下右边距范围内的content
- (UIImage *)yy_screenCapture:(BOOL)isOpaque margin:(UIEdgeInsets)margin
{
    CGRect rect = self.bounds;
    rect.origin.x += margin.left;
    rect.origin.y += margin.top;
    rect.size.width = rect.size.width - margin.left - margin.right;
    rect.size.height = rect.size.height - margin.top - margin.bottom;
    
    UIImage *image = nil;
    if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)])
    {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, isOpaque, [UIScreen mainScreen].scale);
        [self drawViewHierarchyInRect:rect afterScreenUpdates:NO];
        image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    else
    {
        UIGraphicsBeginImageContextWithOptions(rect.size, isOpaque, [UIScreen mainScreen].scale);
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
        image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    return image;
}

2、找到当前View所在的ViewController

- (UIViewController *)yy_viewController
{
    for (UIView *next = [self superview]; next; next = next.superview)
    {
        UIResponder *nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]])
        {
            return (UIViewController*)nextResponder;
        }
    }
    return nil;
}

3、隐藏键盘

/*
常见用法:

[self.view yy_hideKeyboard];

*/

- (void)yy_hideKeyboard{
    [self yy_hideKeyboardOnView:self];
}

- (void)yy_hideKeyboardOnView:(UIView *)view{
    for (UIView *v in view.subviews) {
        if ([v isKindOfClass:[UITextField class]] || [v isKindOfClass:[UITextView class]]) {
            [v resignFirstResponder];
        }
        else{
            [self yy_hideKeyboardOnView:v];
        }
    }
}

你可能感兴趣的:(UIView的扩展工具集)