UIView的扩展工具集
2018-03-29 本文已影响0人
wsj_2012

创建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];
}
}
}