标签:
我们发现,慢慢积累了很多自己写的各种类别的。
。今天,无私。张贴
1.NSDateFomatter
@interface NSDateFormatter (MyCategory) + (id)dateFormatter; + (id)dateFormatterWithFormat:(NSString *)dateFormat; + (id)defaultDateFormatter; @end
@implementation NSDateFormatter (MyCategory)
+ (id)dateFormatter
{
return [[self alloc] init];
}
+ (id)dateFormatterWithFormat:(NSString *)dateFormat
{
NSDateFormatter *dateFormatter = [[self alloc] init];
dateFormatter.dateFormat = dateFormat;
return dateFormatter;
}
+ (id)defaultDateFormatter
{
return [self dateFormatterWithFormat:@"yyyy-MM-dd HH:mm:ss"];
}
@end
@interface NSDate (MyCategory) - (NSString *)timeIntervalDescription;//距离当前的时间间隔 - (NSString *)minuteDescription;//精确到分钟的日期 - (NSString *)formattedDateDescription;//格式化日期 @end
@implementation NSDate (MyCategory)
- (NSString *)timeIntervalDescription
{
NSTimeInterval timeInterval = -[self timeIntervalSinceNow];
if (timeInterval < 60) {
return @"1分钟内";
} else if (timeInterval < 3600) {
return [NSString stringWithFormat:@"%.f分钟前", timeInterval / 60];
} else if (timeInterval < 86400) {
return [NSString stringWithFormat:@"%.f小时前", timeInterval / 3600];
} else if (timeInterval < 2592000) {//30天内
return [NSString stringWithFormat:@"%.f天前", timeInterval / 86400];
} else if (timeInterval < 31536000) {//30天至1年内
NSDateFormatter *dateFormatter = [NSDateFormatter dateFormatterWithFormat:@"M月d日"];
return [dateFormatter stringFromDate:self];
} else {
return [NSString stringWithFormat:@"%.f年前", timeInterval / 31536000];
}
}
- (NSString *)minuteDescription
{
NSDateFormatter *dateFormatter = [NSDateFormatter dateFormatterWithFormat:@"yyyy-MM-dd"];
NSString *theDay = [dateFormatter stringFromDate:self];//日期的年月日
NSString *currentDay = [dateFormatter stringFromDate:[NSDate date]];//当前年月日
if ([theDay isEqualToString:currentDay]) {//当天
[dateFormatter setDateFormat:@"ah:mm"];
return [dateFormatter stringFromDate:self];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == 86400) {//昨天
[dateFormatter setDateFormat:@"ah:mm"];
return [NSString stringWithFormat:@"昨天 %@", [dateFormatter stringFromDate:self]];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] < 86400 * 7) {//间隔一周内
[dateFormatter setDateFormat:@"EEEE ah:mm"];
return [dateFormatter stringFromDate:self];
} else {//曾经
[dateFormatter setDateFormat:@"yyyy-MM-dd ah:mm"];
return [dateFormatter stringFromDate:self];
}
}
- (NSString *)formattedDateDescription
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *theDay = [dateFormatter stringFromDate:self];//日期的年月日
NSString *currentDay = [dateFormatter stringFromDate:[NSDate date]];//当前年月日
NSInteger timeInterval = -[self timeIntervalSinceNow];
if (timeInterval < 60) {
return @"1分钟内";
} else if (timeInterval < 3600) {//1小时内
return [NSString stringWithFormat:@"%d分钟前", timeInterval / 60];
} else if (timeInterval < 21600) {//6小时内
return [NSString stringWithFormat:@"%d小时前", timeInterval / 3600];
} else if ([theDay isEqualToString:currentDay]) {//当天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"今天 %@", [dateFormatter stringFromDate:self]];
} else if ([[dateFormatter dateFromString:currentDay] timeIntervalSinceDate:[dateFormatter dateFromString:theDay]] == 86400) {//昨天
[dateFormatter setDateFormat:@"HH:mm"];
return [NSString stringWithFormat:@"昨天 %@", [dateFormatter stringFromDate:self]];
} else {//曾经
[dateFormatter setDateFormat:@"MM-dd HH:mm"];
return [dateFormatter stringFromDate:self];
}
}
@end
@interface UIColor (MyCategory) + (UIColor *)colorWithHexRGB:(NSString *)hexRGBString; @end
@implementation UIColor (MyCategory)
/*由16进制字符串获取颜色*/
+ (UIColor *)colorWithHexRGB:(NSString *)hexRGBString
{
if ([hexRGBString hasPrefix:@"#"]) {
hexRGBString = [hexRGBString substringFromIndex:1];
}
unsigned int colorCode = 0;
unsigned char redByte, greenByte, blueByte;
if (hexRGBString) {
NSScanner *scanner = [NSScanner scannerWithString:hexRGBString];
[scanner scanHexInt:&colorCode];
}
redByte = (unsigned char) (colorCode >> 16);
greenByte = (unsigned char) (colorCode >> 8);
blueByte = (unsigned char) (colorCode); // masks off high bits
return [UIColor colorWithRed:(float)redByte/0xff green:(float)greenByte/0xff blue:(float)blueByte/0xff alpha:1.0];
}
@end@interface UIImage (MyCategory) //图片拉伸、平铺接口 - (UIImage *)resizableImageWithCompatibleCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode; //图片以ScaleToFit方式拉伸后的CGSize - (CGSize)sizeOfScaleToFit:(CGSize)scaledSize; //将图片转向调整为向上 - (UIImage *)fixOrientation; //以ScaleToFit方式压缩图片 - (UIImage *)compressedImageWithSize:(CGSize)compressedSize; @end
@implementation UIImage (MyCategory)
/*获取当前主题包的指定图片*/
+ (UIImage *)themeImageNamed:(NSString *)name
{
NSUInteger themeID = [[ViewManager defaultManager] themeID];
if (themeID == 0) {//默认主题
NSString *fileName = [NSString stringWithFormat:@"Lianxi.bundle/Images/%@", name];
return [self imageNamed:fileName];
} else {//下载主题
return nil;
}
}
/*图片拉伸、平铺接口。兼容iOS5+*/
- (UIImage *)resizableImageWithCompatibleCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
{
CGFloat version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 6.0) {
return [self resizableImageWithCapInsets:capInsets resizingMode:resizingMode];
} else if (version >= 5.0) {
if (resizingMode == UIImageResizingModeStretch) {
return [self stretchableImageWithLeftCapWidth:capInsets.left topCapHeight:capInsets.top];
} else {//UIImageResizingModeTile
return [self resizableImageWithCapInsets:capInsets];
}
} else {
return [self stretchableImageWithLeftCapWidth:capInsets.left topCapHeight:capInsets.top];
}
}
/*图片以ScaleToFit方式拉伸后的CGSize*/
- (CGSize)sizeOfScaleToFit:(CGSize)scaledSize
{
CGFloat scaleFactor = scaledSize.width / scaledSize.height;
CGFloat imageFactor = self.size.width / self.size.height;
if (scaleFactor <= imageFactor) {//图片横向填充
return CGSizeMake(scaledSize.width, scaledSize.width / imageFactor);
} else {//纵向填充
return CGSizeMake(scaledSize.height * imageFactor, scaledSize.height);
}
}
/*将图片转向调整为向上*/
- (UIImage *)fixOrientation
{
if (self.imageOrientation == UIImageOrientationUp) {
return self;
}
UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
[self drawInRect:CGRectMake(0.0, 0.0, self.size.width, self.size.height)];
UIImage *fixedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return fixedImage;
}
/*以ScaleToFit方式压缩图片*/
- (UIImage *)compressedImageWithSize:(CGSize)compressedSize
{
if (CGSizeEqualToSize(self.size, CGSizeZero) || (self.size.width <= compressedSize.width && self.size.height <= compressedSize.height)) {//不用压缩
return self;
}
CGSize scaledSize = [self sizeOfScaleToFit:compressedSize];
//压缩大小。调整转向
UIGraphicsBeginImageContext(scaledSize);
[self drawInRect:CGRectMake(0.0, 0.0, scaledSize.width, scaledSize.height)];
UIImage *compressedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return compressedImage;
}
@end
@interface UIView (MyCategory) - (void)startShakeAnimation;//摇动动画 - (void)stopShakeAnimation; - (void)startRotateAnimation;//360°旋转动画 - (void)stopRotateAnimation; ///截图 - (UIImage *)screenshot; @property (nonatomic) float top; @property (nonatomic) float bottom; @property (nonatomic) float left; @property (nonatomic) float right; @end
@implementation UIView (MyCategory)
/*截图*/
- (UIImage *)screenshot
{
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, 2.0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
#pragma mark - Animation
- (void)startShakeAnimation
{
CGFloat rotation = 0.05;
CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"transform"];
shake.duration = 0.2;
shake.autoreverses = YES;
shake.repeatCount = MAXFLOAT;
shake.removedOnCompletion = NO;
shake.fromValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform, -rotation, 0.0, 0.0, 1.0)];
shake.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform, rotation, 0.0, 0.0, 1.0)];
[self.layer addAnimation:shake forKey:@"shakeAnimation"];
}
- (void)stopShakeAnimation
{
[self.layer removeAnimationForKey:@"shakeAnimation"];
}
- (void)startRotateAnimation
{
CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"transform"];
shake.duration = 0.5;
shake.autoreverses = NO;
shake.repeatCount = MAXFLOAT;
shake.removedOnCompletion = NO;
shake.fromValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform, M_PI, 0.0, 0.0, 1.0)];
shake.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(self.layer.transform, 0.0, 0.0, 0.0, 1.0)];
[self.layer addAnimation:shake forKey:@"rotateAnimation"];
}
- (void)stopRotateAnimation
{
[self.layer removeAnimationForKey:@"rotateAnimation"];
}
-(float)top
{
return self.frame.origin.x;
}
-(float)bottom
{
return self.top+self.frame.size.height;
}
-(float)left
{
return self.frame.origin.x;
}
-(float)right
{
return self.left+self.frame.size.width;
}
@end
版权声明:本文博主原创文章,博客,未经同意不得转载。
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/4853326.html