// // sysInfo.m // myhome // // Created by hkh on 15/10/31. // // #import "UI.h" #import #import "Pub.h" @interface UI () @end @implementation UI{ } + (CGFloat)getScreenWidth{ CGRect screenRect = [[UIScreen mainScreen] bounds]; return screenRect.size.width; } + (CGFloat)getScreenHeight{ CGRect screenRect = [[UIScreen mainScreen] bounds]; return screenRect.size.height; } + (void)SetRView:(UIView *) view Top:(NSString *) t Right:(NSString *) r Bottom:(NSString *) b Left:(NSString *) l{ CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat t1 = [UI String2Float:t ULen:screenRect.size.height]; CGFloat r1 = [UI String2Float:r ULen:screenRect.size.width]; CGFloat b1 = [UI String2Float:b ULen:screenRect.size.height]; CGFloat l1 = [UI String2Float:l ULen:screenRect.size.width]; CGFloat w1 = screenRect.size.width - l1 - r1; CGFloat h1 = screenRect.size.height - t1 - b1; CGFloat x1 = l1; CGFloat y1 = t1; //NSLog(@"SetRView:%f,%f,%f,%f",x1, y1, w1, h1); view.frame = CGRectMake(x1, y1, w1, h1); } + (CGFloat)String2Float:(NSString *) str ULen:(CGFloat) l{ CGFloat v = 0; //判断宽度是值还是百分比 if([str containsString:@"%"]){ v = [[str stringByReplacingOccurrencesOfString:@"%" withString:@""] floatValue]; v = v * l/100; } else if([str containsString:@"v"]){ CGRect screenRect = [[UIScreen mainScreen] bounds]; if([str containsString:@"vw"]){ v = [[str stringByReplacingOccurrencesOfString:@"vw" withString:@""] floatValue]; v = v * screenRect.size.width/100; } else if([str containsString:@"vh"]){ v = [[str stringByReplacingOccurrencesOfString:@"vw" withString:@""] floatValue]; v = v * screenRect.size.height/100; } else if([str containsString:@"vmin"]){ v = [[str stringByReplacingOccurrencesOfString:@"vw" withString:@""] floatValue]; v = v * MIN(screenRect.size.width, screenRect.size.height) /100; } else if([str containsString:@"vmax"]){ v = [[str stringByReplacingOccurrencesOfString:@"vw" withString:@""] floatValue]; v = v * MAX(screenRect.size.width, screenRect.size.height) /100; } } else{ v = [[str stringByReplacingOccurrencesOfString:@"dp" withString:@""] floatValue]; } return v; } + (void)setFrame:(UIView *) view Width:(NSString *) w Height:(NSString *) h Left:(NSString *) x Top:(NSString *) y{ CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat w1 = [UI String2Float:w ULen:screenRect.size.width]; CGFloat h1 = [UI String2Float:h ULen:screenRect.size.height]; CGFloat x1 = [UI String2Float:x ULen:screenRect.size.width]; CGFloat y1 = [UI String2Float:y ULen:screenRect.size.height]; //NSLog(@"setFrame:%f,%f,%f,%f",x1, y1, w1, h1); view.frame = CGRectMake(x1, y1, w1, h1); } + (void)setFrameInView:(UIView *) view Width:(NSString *) w Height:(NSString *) h TranslateX:(NSString *) x TranslateY:(NSString *) y InView:(UIView *) parent Position:(UIPositionInParent)pos{ if(!parent)parent = (UIView *)[view nextResponder]; CGFloat w1 = [UI String2Float:w ULen:parent.frame.size.width]; CGFloat h1 = [UI String2Float:h ULen:parent.frame.size.height]; CGFloat x1 = [UI String2Float:x ULen:parent.frame.size.width]; CGFloat y1 = [UI String2Float:y ULen:parent.frame.size.height]; switch (pos) { case UITopLeft: //y1 = y1; //x1 = x1; break; case UITopMid: //y1 = y1; x1 += (parent.frame.size.width - w1)/2; break; case UITopRight: //y1 = y1; x1 = parent.frame.size.width - w1 - x1; break; case UIMidLeft: y1 += (parent.frame.size.height - h1)/2; //x1 = x1; break; case UICenter: y1 += (parent.frame.size.height - h1)/2; x1 += (parent.frame.size.width - w1)/2; break; case UIMidRight: y1 += (parent.frame.size.height - h1)/2; x1 = parent.frame.size.width - w1 - x1; break; case UIBottomLeft: y1 = parent.frame.size.height - h1 - y1; //x1 = x1; break; case UIBottomMid: y1 = parent.frame.size.height - h1 - y1; x1 += (parent.frame.size.width - w1)/2; break; case UIBottomRight: y1 = parent.frame.size.height - h1 - y1; x1 = parent.frame.size.width - w1 - x1; break; default: break; } //NSLog(@"setFrameInView:%f,%f,%f,%f",x1, y1, w1, h1); view.frame = CGRectMake(x1, y1, w1, h1); } + (void)setFrameByView:(UIView *) view Width:(NSString *) w Height:(NSString *) h TranslateX:(NSString *) x TranslateY:(NSString *) y ByView:(UIView *) brother Position:(UIPositionByView)pos{ UIView * parent = (UIView *)[view nextResponder]; CGFloat w1 = [UI String2Float:w ULen:parent.frame.size.width]; CGFloat h1 = [UI String2Float:h ULen:parent.frame.size.height]; CGFloat x1 = [UI String2Float:x ULen:parent.frame.size.width]; CGFloat y1 = [UI String2Float:y ULen:parent.frame.size.height]; switch (pos) { case TopAlignLeft: y1 = brother.frame.origin.y - h1 - y1; x1 += brother.frame.origin.x; break; case TopAlignCenter: y1 = brother.frame.origin.y - h1 - y1; x1 += brother.frame.origin.x + (brother.frame.size.width - w1)/2 ; break; case TopAlignRight: y1 = brother.frame.origin.y - h1 - y1; x1 += brother.frame.size.width + brother.frame.origin.x - w1; break; case RightAlignTop: x1 += brother.frame.size.width + brother.frame.origin.x ; y1 += brother.frame.origin.y; break; case RightAlignCenter: x1 += brother.frame.size.width + brother.frame.origin.x ; y1 += brother.frame.origin.y + (brother.frame.size.height - h1)/2 ; break; case RightAlignBottom: x1 += brother.frame.size.width + brother.frame.origin.x ; y1 += brother.frame.size.height + brother.frame.origin.y - h1; break; case BottomAlignLeft: y1 += brother.frame.size.height + brother.frame.origin.y; x1 += brother.frame.origin.x; break; case BottomAlignCenter: y1 += brother.frame.size.height + brother.frame.origin.y; x1 += brother.frame.origin.x + (brother.frame.size.width - w1)/2 ; break; case BottomAlignRight: y1 += brother.frame.size.height + brother.frame.origin.y; x1 += brother.frame.size.width + brother.frame.origin.x - w1; break; case LeftAlignTop: x1 = brother.frame.origin.x - w1 - x1; y1 += brother.frame.origin.y; break; case LeftAlignCenter: x1 += brother.frame.origin.x - w1 - x1; y1 += brother.frame.origin.y + (brother.frame.size.height - h1)/2 ; break; case LeftAlignBottom: x1 += brother.frame.origin.x - w1 - x1; y1 += brother.frame.size.height + brother.frame.origin.y - h1; break; default: break; } //NSLog(@"setFrameInView:%f,%f,%f,%f",x1, y1, w1, h1); view.frame = CGRectMake(x1, y1, w1, h1); } /**不能对最上层控件使用*/ + (void)chgMargin:(UIView *) view Css:(NSString *) css{ UIView * parent = (UIView *)[view nextResponder]; CGFloat w1 = view.frame.size.width; CGFloat h1 = view.frame.size.height; CGFloat x1 = view.frame.origin.x; CGFloat y1 = view.frame.origin.y; NSArray *array = [css componentsSeparatedByString:@" "]; if(array.count>0){//上 CGFloat minus = [UI String2Float:array[0] ULen:parent.frame.size.height]; if(minus < h1){ y1 += minus; h1 -= minus; } } if(array.count>1){//右 CGFloat minus = [UI String2Float:array[1] ULen:parent.frame.size.width]; if(minus < w1){ w1 -= minus; //y1不变 } } if(array.count>2){//下 CGFloat minus = [UI String2Float:array[2] ULen:parent.frame.size.height]; if(minus < h1){ //x1不变; h1 -= minus; } } if(array.count>3){//左 CGFloat minus = [UI String2Float:array[3] ULen:parent.frame.size.width]; if(minus < w1){ x1 += minus; w1 -= minus; } } view.frame = CGRectMake(x1, y1, w1, h1); } + (void)setCornerRadius:(UIView *) view{ CGFloat w1 = view.frame.size.width; CGFloat h1 = view.frame.size.height; //NSLog(@"setCornerRadius: %f,%f", w1, h1); [view.layer setCornerRadius:MIN(w1,h1)/2]; //设置矩形四个圆角半径 } + (void)setGradientBorder:(UIView *)view withColor:(NSInteger)color{ view.backgroundColor = [UI colorWithHex:color alpha:0.5] ; CAGradientLayer *layer1 = [[CAGradientLayer alloc] init]; layer1.frame = view.bounds; layer1.colors = @[(__bridge id)[UI colorWithHex:color].CGColor,(__bridge id)[UI colorWithHex:0xffffff].CGColor]; layer1.startPoint = CGPointMake(0.3, 0.3); layer1.endPoint = CGPointMake(1, 1); [layer1 setCornerRadius:MIN(view.frame.size.width,view.frame.size.height)/2]; CAShapeLayer *layer2 = [[CAShapeLayer alloc] init]; layer2.lineWidth = 0; //maskLayer.path = [UIBezierPath bezierPathWithRect:self.openView.bounds].CGPath; CGPoint center = CGPointMake(view.frame.size.width * 0.5, view.frame.size.height * 0.5); CGFloat radius = view.frame.size.height * 0.44; layer2.path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:0 endAngle:M_PI * 2 clockwise:YES].CGPath; layer2.fillColor = [UI colorWithHex:color].CGColor; layer2.strokeColor = nil; [view.layer addSublayer:layer1]; [view.layer addSublayer:layer2]; } + (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize { UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height)); [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)]; UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return reSizeImage; } + (UILabel *)NewLabel:(NSString *) text Color:(UIColor *)color Size:(CGFloat)size Align:(NSTextAlignment) align{ UILabel *label = [[UILabel alloc] init]; label.font = [UIFont systemFontOfSize:size]; label.textColor = color; label.textAlignment = align; label.text = NSLocalizedString(text, nil); return label; } + (CGFloat)getNavHeight{ @try { if([@"MainTabBar" isEqualToString:NSStringFromClass([[Pub getApp].window.rootViewController class])]){ UITabBarController *tab = (UITabBarController *)[Pub getApp].window.rootViewController; UINavigationController *nav = tab.viewControllers[tab.selectedIndex]; return nav.navigationBar.frame.size.height; } } @catch (NSException * e) { } return 44.; } //颜色处理 + (UIColor *)colorWithHex:(NSInteger)hexValue { return [self colorWithHex:hexValue alpha:1.0]; } + (UIColor *)colorWithHex:(NSInteger)hexValue alpha:(CGFloat)alphaValue { return [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16)) / 255.0 green:((float)((hexValue & 0xFF00) >> 8)) / 255.0 blue:((float)(hexValue & 0xFF)) / 255.0 alpha:alphaValue]; } + (CGFloat)getStatuHeight{ if(@available(ios 13.0,*)){ NSSet *set = [UIApplication sharedApplication].connectedScenes; UIWindowScene * windowScene = [set anyObject]; UIStatusBarManager *statusBarManager = windowScene.statusBarManager; return statusBarManager.statusBarFrame.size.height; } else{ return [UIApplication sharedApplication].statusBarFrame.size.height; } } + (CGFloat)getStatuAndStatuHeight{ return [self getStatuHeight]+[self getNavHeight]; } + (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size { CGRect rect = CGRectMake(0, 0, size.width, size.height); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context,color.CGColor); CGContextFillRect(context, rect); UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } @end