357 lines
13 KiB
Mathematica
Raw Normal View History

//
// sysInfo.m
// myhome
//
// Created by hkh on 15/10/31.
//
//
#import "UI.h"
#import <math.h>
#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