iOS开发 UIImageView的分类

一.Objective-C版

.h文件

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

/**
 *  这个分类为UIImageView添加一些有用的方法
 */
@interface UIImageView (WLKit)

/**
 *  创建一个UIImageView
 *
 *  @param image UIImageView的图片
 *  @param rect  UIImageView的坐标
 *
 *  @return 返回一个UIImageView
 */
+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image
                                      frame:(CGRect)rect;

/**
 *  创建一个UIImageView
 *
 *  @param image  UIImageView的图片
 *  @param size   UIImageView的大小
 *  @param center UIImageView的中心
 *
 *  @return 返回一个UIImageView
 */
+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image
                                       size:(CGSize)size
                                     center:(CGPoint)center;

/**
 *  创建一个UIImageView
 *
 *  @param image  UIImageView的图片
 *  @param center UIImageView的中心
 *
 *  @return Returns the created UIImageView
 */
+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image
                                     center:(CGPoint)center;

/**
 *  Create an UIImageView with an image and use it as a template with the given color
 *
 *  @param image     UIImageView image
 *  @param tintColor UIImageView tint color
 *
 *  @return Returns the created UIImageView
 */
+ (instancetype _Nonnull)imageViewWithImageAsTemplate:(UIImage *_Nonnull)image
                                            tintColor:(UIColor *_Nonnull)tintColor;

/**
 *  Create a drop shadow effect
 *
 *  @param color   Shadow's color
 *  @param radius  Shadow's radius
 *  @param offset  Shadow's offset
 *  @param opacity Shadow's opacity
 */
- (void)setImageShadowColor:(UIColor *_Nonnull)color
                     radius:(CGFloat)radius
                     offset:(CGSize)offset
                    opacity:(CGFloat)opacity;

/**
 *  Mask the current UIImageView with an UIImage
 *
 *  @param image The mask UIImage
 */
- (void)setMaskImage:(UIImage *_Nonnull)image;

@end

.m文件

#import "UIImageView+WLKit.h"

@implementation UIImageView (WLKit)

+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image frame:(CGRect)rect
{
    UIImageView *_image = [[UIImageView alloc] init];
    [_image setFrame:rect];
    [_image setImage:image];
    return _image;
}

+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image size:(CGSize)size center:(CGPoint)center
{
    UIImageView *_image = [[UIImageView alloc] init];
    [_image setFrame:CGRectMake(0, 0, size.width, size.height)];
    [_image setImage:image];
    [_image setCenter:center];
    return _image;
}

+ (instancetype _Nonnull)imageViewWithImage:(UIImage *_Nonnull)image center:(CGPoint)center
{
    UIImageView *_image = [[UIImageView alloc] init];
    [_image setFrame:CGRectMake(0, 0, image.size.width, image.size.height)];
    [_image setImage:image];
    [_image setCenter:center];
    return _image;
}

+ (instancetype _Nonnull)imageViewWithImageAsTemplate:(UIImage *_Nonnull)image tintColor:(UIColor *_Nonnull)tintColor
{
    UIImageView *_image = [[UIImageView alloc] init];
    image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    [_image setImage:image];
    [_image setTintColor:tintColor];
    return _image;
}

- (void)setImageShadowColor:(UIColor *_Nonnull)color radius:(CGFloat)radius offset:(CGSize)offset opacity:(CGFloat)opacity
{
    self.layer.shadowColor = color.CGColor;
    self.layer.shadowRadius = radius;
    self.layer.shadowOffset = offset;
    self.layer.shadowOpacity = opacity;
    self.clipsToBounds = NO;
}

- (void)setMaskImage:(UIImage *_Nonnull)image
{
    CALayer *mask = [CALayer layer];
    mask.contents = (id)[image CGImage];
    mask.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
    self.layer.mask = mask;
    self.layer.masksToBounds = YES;
}

- (void)setAlpha:(CGFloat)alpha
{
    if ([self.superview isKindOfClass:[UITableView class]]) {
        if (self.superview.tag == 836913) {
            if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) {
                if (self.frame.size.width < 10 && self.frame.size.height > self.frame.size.width) {
                    UIScrollView *sc = (UIScrollView*)self.superview;
                    if (sc.frame.size.height < sc.contentSize.height) {
                        [super setAlpha:0.5];
                        return;
                    }
                }
            }
        }
        
        if (self.superview.tag == 836914) {
            if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) {
                if (self.frame.size.height < 10 && self.frame.size.height < self.frame.size.width) {
                    UIScrollView *sc = (UIScrollView*)self.superview;
                    if (sc.frame.size.width < sc.contentSize.width) {
                        return;
                    }
                }
            }
        }
    }
    
    [super setAlpha:alpha];
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值