117 lines
4.5 KiB
Dart
117 lines
4.5 KiB
Dart
//
|
|
// MOPTools.m
|
|
// mop
|
|
//
|
|
// Created by 杨涛 on 2020/2/27.
|
|
//
|
|
|
|
#import "MOPTools.h"
|
|
|
|
@implementation MOPTools
|
|
+ (UIViewController *)topViewController{
|
|
return [self topViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
|
|
}
|
|
|
|
+ (UIViewController *)topViewController:(UIViewController *)rootViewController
|
|
{
|
|
if (rootViewController.presentedViewController == nil) {
|
|
return rootViewController;
|
|
}
|
|
|
|
if ([rootViewController.presentedViewController isMemberOfClass:[UINavigationController class]]) {
|
|
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
|
|
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
|
|
return [self topViewController:lastViewController];
|
|
}
|
|
|
|
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
|
|
return [self topViewController:presentedViewController];
|
|
}
|
|
|
|
+ (UIColor *)colorWithRGBHex:(UInt32)hex
|
|
{
|
|
int a = (hex >> 24) & 0xFF;
|
|
int r = (hex >> 16) & 0xFF;
|
|
int g = (hex >> 8) & 0xFF;
|
|
int b = (hex) & 0xFF;
|
|
|
|
return [UIColor colorWithRed:r / 255.0f
|
|
green:g / 255.0f
|
|
blue:b / 255.0f
|
|
alpha:a / 255.0f];
|
|
}
|
|
|
|
+ (UIColor *)fat_colorWithHexString:(NSString *)hexColor {
|
|
if (!hexColor) return nil;
|
|
// 兼容black和white
|
|
if ([hexColor compare:@"black" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
|
|
return UIColor.blackColor;
|
|
} else if ([hexColor compare:@"white" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
|
|
return UIColor.whiteColor;
|
|
}
|
|
|
|
NSString *cString = [[hexColor stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
|
|
|
|
if (cString.length == 0) return nil;
|
|
if ([cString hasPrefix:@"#"]) cString = [cString substringFromIndex:1];
|
|
if ([cString containsString:@"0X"]) cString = [cString stringByReplacingOccurrencesOfString:@"0X" withString:@""];
|
|
|
|
if (cString.length == 3) { // 3位转成6位
|
|
cString = [NSString stringWithFormat:@"%c%c%c%c%c%c",
|
|
[cString characterAtIndex:0],
|
|
[cString characterAtIndex:0],
|
|
[cString characterAtIndex:1],
|
|
[cString characterAtIndex:1],
|
|
[cString characterAtIndex:2],
|
|
[cString characterAtIndex:2]];
|
|
}
|
|
if (cString.length == 4) { // 4位转为8位
|
|
cString = [NSString stringWithFormat:@"%c%c%c%c%c%c%c%c",
|
|
[cString characterAtIndex:0],
|
|
[cString characterAtIndex:0],
|
|
[cString characterAtIndex:1],
|
|
[cString characterAtIndex:1],
|
|
[cString characterAtIndex:2],
|
|
[cString characterAtIndex:2],
|
|
[cString characterAtIndex:3],
|
|
[cString characterAtIndex:3]];
|
|
}
|
|
|
|
NSScanner *scanner = [NSScanner scannerWithString:cString];
|
|
unsigned hexNum;
|
|
if (![scanner scanHexInt:&hexNum]) return [UIColor blackColor];
|
|
|
|
if (cString.length == 6) {
|
|
return [self fat_colorWithRGBHex:hexNum];
|
|
} else if (cString.length == 8) {
|
|
return [self fat_colorWithARGBHex:hexNum];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
+ (UIColor *)fat_colorWithRGBHex:(UInt32)hex {
|
|
int red = (hex >> 16) & 0xFF;
|
|
int green = (hex >> 8) & 0xFF;
|
|
int blue = (hex)&0xFF;
|
|
return [UIColor colorWithRed:red / 255.0f green:green / 255.0f blue:blue / 255.0f alpha:1.0f];
|
|
}
|
|
|
|
+ (UIColor *)fat_colorWithRGBAlphaHex:(UInt32)hex {
|
|
int red = (hex >> 24) & 0xFF;
|
|
int green = (hex >> 16) & 0xFF;
|
|
int blue = (hex >> 8) & 0xFF;
|
|
int alpha = hex & 0xFF;
|
|
return [UIColor colorWithRed:red / 255.0f green:green / 255.0f blue:blue / 255.0f alpha:alpha / 255.0f];
|
|
}
|
|
|
|
+ (UIColor *)fat_colorWithARGBHex:(UInt32)hex {
|
|
int alpha = (hex >> 24) & 0xFF;
|
|
int red = (hex >> 16) & 0xFF;
|
|
int green = (hex >> 8) & 0xFF;
|
|
int blue = hex & 0xFF;
|
|
return [UIColor colorWithRed:red / 255.0f green:green / 255.0f blue:blue / 255.0f alpha:alpha / 255.0f];
|
|
}
|
|
|
|
|
|
@end
|