iOS常用類目

來源:互聯網
上載者:User

標籤:des   blog   color   os   io   ar   for   2014   art   

發現慢慢積累了一大堆自己寫的各種類的類目了。。今天無私一把。都貼出來

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

2.NSDate

@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

3.UIColor

@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

4.UIImage

@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

5.UIView

@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





iOS常用類目

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.