本文实例为大家分享了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,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,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,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