This commit is contained in:
启星
2025-08-11 10:43:19 +08:00
commit fb2c58d96f
8839 changed files with 709982 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
//
// BaseUIStyle.h
// 君分时代
//
// Created by 贠小飞 on 2018/4/10.
// Copyright © 2018年 贠小飞. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface BaseUIStyle : NSObject
@property (nonatomic, readonly) float topBarHeight;
@property (nonatomic, readonly) UIColor *topBarBgColor;
@property (nonatomic, readonly) UIFont *topBarTitleFont;
@property (nonatomic, readonly) UIColor *topBarTitleColor;
@property (nonatomic, readonly) UIFont *topBarButtionFont;
@property (nonatomic, readonly) UIColor *topBarButtonTitleColor;
@property (nonatomic, readonly) float tabBarHeight;
@property (nonatomic, readonly) UIColor *tabBarBgColor;
@property (nonatomic, readonly) UIColor *tableHeaderBgColor;
@property (nonatomic, readonly) UIColor *tableBgColor;
@property (nonatomic, readonly) UIColor *tableCellBgColor;
@property (nonatomic, readonly) UIColor *tableSeparatorColor;
@property (nonatomic, readonly) NSString *bgImageName;
@property (nonatomic, readonly) NSString *bgMImageName;
@property (nonatomic, readonly) UIColor *bgColor;
@end

View File

@@ -0,0 +1,80 @@
//
// BaseUIStyle.m
//
//
// Created by on 2018/4/10.
// Copyright © 2018 . All rights reserved.
//
#import "BaseUIStyle.h"
#import "Global.h"
@implementation BaseUIStyle
- (float)topBarHeight{
return ZJTopNavH;
}
-(UIColor *)topBarBgColor{
return mainColor;
}
- (UIFont *)topBarTitleFont{
return [UIFont systemFontOfSize:17 weight:(UIFontWeightBold)];
}
- (UIColor *)topBarTitleColor{
return MHColorFromHexString(@"#333333");
}
- (UIFont *)topBarButtionFont{
return [UIFont systemFontOfSize:14];
}
- (UIColor *)topBarButtonTitleColor{
return [UIColor whiteColor];
}
- (float)tabBarHeight {
return 49.0f;
}
- (UIColor *)tabBarBgColor {
return [UIColor whiteColor];
}
- (UIColor *)tableHeaderBgColor {
return mainColor;
}
- (UIColor *)tableBgColor {
return Color(247.0, 249.0, 250.0,1.0);
}
- (UIColor *)tableCellBgColor {
return [UIColor clearColor];
}
- (UIColor *)tableSeparatorColor {
return Color(204.0, 204.0, 204.0,1.0);
}
- (NSString *)bgImgName {
return nil;
}
- (NSString *)bgMImgName {
return nil;
}
- (UIColor *)bgColor {
return mainColor;
}
@end

View File

@@ -0,0 +1,18 @@
//
// CALayer+Extension.h
// MoHuanXingYu
//
// Created by aa on 2019/5/28.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <QuartzCore/QuartzCore.h>
#import <UIKit/UIKit.h>
@interface CALayer (Extension)
- (void)setBorderColorFromUIColor:(UIColor *)color;
@end

View File

@@ -0,0 +1,22 @@
//
// CALayer+Extension.m
// MoHuanXingYu
//
// Created by aa on 2019/5/28.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "CALayer+Extension.h"
@implementation CALayer (Extension)
- (void)setBorderColorFromUIColor:(UIColor *)color {
self.borderColor = color.CGColor;
}
@end

View File

@@ -0,0 +1,39 @@
//
// ControlCreator.h
// 君分时代
//
// Created by 贠小飞 on 2018/4/10.
// Copyright © 2018年 贠小飞. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "EdgeInsetsLabel.h"
@interface ControlCreator : NSObject
#pragma mark create control
+ (UIView *)createView:(UIView *)parent rect:(CGRect)rect backguoundColor:(UIColor *)backguoundColor;
+ (UIDatePicker *)createDatePickerView:(UIView *)parent rect:(CGRect)rect backguoundColor:(UIColor *)backguoundColor;
+ (UIPickerView *)createPickerView:(UIView *)parent rect:(CGRect)rect dataSource:(id)dataSource delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor;
+ (UITableView *)createTableView:(UIView *)parent rect:(CGRect)rect dataSource:(id)dataSource delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor;
+ (UIScrollView *)createScrollView:(UIView *)parent rect:(CGRect)rect delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor;
+ (UIImageView *)createImageView:(UIView *)parent rect:(CGRect)rect imageName:(NSString *)imageName backguoundColor:(UIColor *)backguoundColor;
+ (UILabel *)createLabel:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor align:(NSTextAlignment)align lines:(NSInteger)lines;
+ (EdgeInsetsLabel *)createEdgeInsetsLabel:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor align:(NSTextAlignment)align lines:(NSInteger)lines;
+ (UIButton *)createButton:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor imageName:(NSString *)imageName target:(id)target action:(SEL)action;
+ (UITextField *)createTextField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor;
+ (UITextField *)createNumberField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor;
+ (UITextField *)createSecureField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor;
+ (UITextView *)createTextView:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor;
#pragma mark calcu text size
+ (CGSize)calcuTextSize:(NSString *)text containSize:(CGSize)containSize font:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode;
+ (CGSize)calcuAttributeTextSize:(NSMutableAttributedString *)attributeText containSize:(CGSize)containSize lineBreakMode:(NSLineBreakMode)lineBreakMode;
#pragma mark create color use hex
+ (UIColor *)colorWithHex:(long)hexColor;
+ (UIColor *)colorWithHex:(long)hexColor alpha:(CGFloat)alpha;
@end

View File

@@ -0,0 +1,319 @@
//
// ControlCreator.m
//
//
// Created by on 2018/4/10.
// Copyright © 2018 . All rights reserved.
//
#import "ControlCreator.h"
@implementation ControlCreator
#pragma mark create control
+ (UIView *)createView:(UIView *)parent rect:(CGRect)rect backguoundColor:(UIColor *)backguoundColor {
UIView *view = [[UIView alloc] initWithFrame:rect];
if (parent) {
[parent addSubview:view];
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UIDatePicker *)createDatePickerView:(UIView *)parent rect:(CGRect)rect backguoundColor:(UIColor *)backguoundColor {
UIDatePicker *view = [[UIDatePicker alloc] init];
rect.size.height = view.frame.size.height;
view.frame = rect;
view.backgroundColor = [UIColor clearColor];
view.datePickerMode = UIDatePickerModeDate;
if (parent) {
[parent addSubview:view];
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UIPickerView *)createPickerView:(UIView *)parent rect:(CGRect)rect dataSource:(id)dataSource delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor {
UIPickerView *view = [[UIPickerView alloc] init];
rect.size.height = view.frame.size.height;
view.frame = rect;
view.backgroundColor = [UIColor clearColor];
view.showsSelectionIndicator = YES;
view.dataSource = dataSource;
view.delegate = delegate;
if (parent) {
[parent addSubview:view];
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UITableView *)createTableView:(UIView *)parent rect:(CGRect)rect dataSource:(id)dataSource delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor {
UITableView *view = [[UITableView alloc] initWithFrame:rect];
view.separatorStyle = UITableViewCellSeparatorStyleNone;
view.showsHorizontalScrollIndicator = NO;
view.showsVerticalScrollIndicator = NO;
view.dataSource = dataSource;
view.delegate = delegate;
view.bounces = YES;
if (parent) {
[parent addSubview:view];
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UIScrollView *)createScrollView:(UIView *)parent rect:(CGRect)rect delegate:(id)delegate backguoundColor:(UIColor *)backguoundColor {
UIScrollView *view = [[UIScrollView alloc] initWithFrame:rect];
view.showsHorizontalScrollIndicator = NO;
view.showsVerticalScrollIndicator = NO;
view.delegate = delegate;
view.bounces = YES;
if (parent) {
[parent addSubview:view];
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UIImageView *)createImageView:(UIView *)parent rect:(CGRect)rect imageName:(NSString *)imageName backguoundColor:(UIColor *)backguoundColor {
UIImageView *view = [[UIImageView alloc] initWithFrame:rect];
view.contentMode = UIViewContentModeScaleAspectFit;
if (parent) {
[parent addSubview:view];
}
if (imageName && ![imageName isEqualToString:@""]) {
UIImage *image = [UIImage imageNamed:imageName];
if (image) {
view.image = image;
}
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
+ (UILabel *)createLabel:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor align:(NSTextAlignment)align lines:(NSInteger)lines {
UILabel *label = [[UILabel alloc] initWithFrame:rect];
if (parent) {
[parent addSubview:label];
}
if (text) {
label.text = text;
}
if (font) {
label.font = font;
}
if (color) {
label.textColor = color;
}
if (backguoundColor) {
label.backgroundColor = backguoundColor;
}
label.textAlignment = align;
label.numberOfLines = lines;
label.lineBreakMode = NSLineBreakByTruncatingTail;
// label.adjustsFontSizeToFitWidth = YES;
return label;
}
+ (EdgeInsetsLabel *)createEdgeInsetsLabel:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor align:(NSTextAlignment)align lines:(NSInteger)lines
{
EdgeInsetsLabel *label = [[EdgeInsetsLabel alloc] initWithFrame:rect];
if (parent) {
[parent addSubview:label];
}
if (text) {
label.text = text;
}
if (font) {
label.font = font;
}
if (color) {
label.textColor = color;
}
if (backguoundColor) {
label.backgroundColor = backguoundColor;
}
label.textAlignment = align;
label.numberOfLines = lines;
label.lineBreakMode = NSLineBreakByTruncatingTail;
label.adjustsFontSizeToFitWidth = YES;
return label;
}
+ (UIButton *)createButton:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor imageName:(NSString *)imageName target:(id)target action:(SEL)action {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
if (parent) {
[parent addSubview:button];
}
button.frame = rect;
if (text) {
[button setTitle:text forState:UIControlStateNormal];
}
if (font) {
button.titleLabel.font = font;
}
if (color) {
[button setTitleColor:color forState:UIControlStateNormal];
}
if (backguoundColor) {
[button setBackgroundColor:backguoundColor];
}
if (imageName && ![imageName isEqualToString:@""]) {
UIImage *image = [UIImage imageNamed:imageName];
if (image) {
[button setImage:image forState:UIControlStateNormal];
}
}
if (target && [target respondsToSelector:action]) {
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
}
button.titleLabel.adjustsFontSizeToFitWidth = YES;
// button.imageView.contentMode = UIViewContentModeScaleAspectFit;
// button.adjustsImageWhenHighlighted = NO;
return button;
}
+ (UITextField *)createTextField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor {
UITextField *inputField = [[UITextField alloc] initWithFrame:rect];
if (parent) {
[parent addSubview:inputField];
}
if (placeholder) {
NSMutableAttributedString *notice = [[NSMutableAttributedString alloc] initWithString:placeholder];
if (placeholderColor) {
[notice addAttribute:NSForegroundColorAttributeName value:placeholderColor range:NSMakeRange(0, placeholder.length)];
}
inputField.attributedPlaceholder = notice;
}
if (text) {
inputField.text = text;
}
if (font) {
inputField.font = font;
}
if (color) {
inputField.textColor = color;
}
if (backguoundColor) {
inputField.backgroundColor = backguoundColor;
}
inputField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
inputField.returnKeyType = UIReturnKeyDone;
return inputField;
}
+ (UITextField *)createNumberField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor {
UITextField *inputField = [ControlCreator createTextField:parent rect:rect placeholder:placeholder placeholderColor:placeholderColor text:text font:font color:color backguoundColor:backguoundColor];
inputField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
return inputField;
}
+ (UITextField *)createSecureField:(UIView *)parent rect:(CGRect)rect placeholder:(NSString *)placeholder placeholderColor:(UIColor *)placeholderColor text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor {
UITextField *inputField = [ControlCreator createTextField:parent rect:rect placeholder:placeholder placeholderColor:placeholderColor text:text font:font color:color backguoundColor:backguoundColor];
inputField.secureTextEntry = YES;
return inputField;
}
+ (UITextView *)createTextView:(UIView *)parent rect:(CGRect)rect text:(NSString *)text font:(UIFont *)font color:(UIColor *)color backguoundColor:(UIColor *)backguoundColor {
UITextView *view = [[UITextView alloc] initWithFrame:rect];
if (parent) {
[parent addSubview:view];
}
if (text) {
view.text = text;
}
if (font) {
view.font = font;
}
if (color) {
view.textColor = color;
}
if (backguoundColor) {
view.backgroundColor = backguoundColor;
}
return view;
}
#pragma mark calcu text size
+ (CGSize)calcuTextSize:(NSString *)text containSize:(CGSize)containSize font:(UIFont *)font lineBreakMode:(NSLineBreakMode)lineBreakMode {
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineBreakMode:lineBreakMode];
CGSize size = CGSizeZero;
if (CGSizeEqualToSize(containSize, CGSizeZero)) {
size = [text sizeWithAttributes:@{NSFontAttributeName: font}];
} else {
CGRect rect = [text boundingRectWithSize:containSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName: font, NSParagraphStyleAttributeName: style}
context:nil];
size = rect.size;
}
return size;
}
+ (CGSize)calcuAttributeTextSize:(NSMutableAttributedString *)attributeText containSize:(CGSize)containSize lineBreakMode:(NSLineBreakMode)lineBreakMode {
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineBreakMode:lineBreakMode];
CGSize size = CGSizeZero;
if (CGSizeEqualToSize(containSize, CGSizeZero)) {
CGRect rect = [attributeText boundingRectWithSize:CGSizeMake(INT32_MAX, INT32_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
size = rect.size;
} else {
CGRect rect = [attributeText boundingRectWithSize:containSize
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
size = rect.size;
}
return size;
}
#pragma mark create color use hex
+ (UIColor *)colorWithHex:(long)hexColor {
CGFloat red = ((CGFloat)((hexColor & 0xFF0000) >> 16)) / 255.0f;
CGFloat green = ((CGFloat)((hexColor & 0xFF00) >> 8)) / 255.0f;
CGFloat blue = ((CGFloat)(hexColor & 0xFF)) / 255.0f;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f];
}
+ (UIColor *)colorWithHex:(long)hexColor alpha:(CGFloat)alpha {
CGFloat red = ((CGFloat)((hexColor & 0xFF0000) >> 16)) / 255.0f;
CGFloat green = ((CGFloat)((hexColor & 0xFF00) >> 8)) / 255.0f;
CGFloat blue = ((CGFloat)(hexColor & 0xFF)) / 255.0f;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
@end

View File

@@ -0,0 +1,139 @@
//
// MBProgressHUD+SUP.h
// SuperProject
//
// Created by NShunJian on 2018/1/20.
// Copyright © 2018年 superMan. All rights reserved.
//
#import <MBProgressHUD/MBProgressHUD.h>
@interface MBProgressHUD (SUP)
/**
* 自定义图片的提示3s后自动消息
*
* @param text 要显示的文字
* @param icon 图片地址(建议不要太大的图片)
* @param view 要添加的view
*/
+ (void)showCustomIcon:(NSString *)iconName Title:(NSString *)title ToView:(UIView *)view;
/**
* 自动消失成功提示,带默认图
*
* @param success 要显示的文字
* @param view 要添加的view
*/
+ (void)showSuccess:(NSString *)success ToView:(UIView *)view;
/**
* 自动消失错误提示,带默认图
*
* @param error 要显示的错误文字
* @param view 要添加的View
*/
+ (void)showError:(NSString *)error ToView:(UIView *)view;
/**
* 自动消失提示,带默认图
*
* @param Info 要显示的文字
* @param view 要添加的View
*/
+ (void)showInfo:(NSString *)Info ToView:(UIView *)view;
/**
* 自动消失提示,带默认图
*
* @param Warn 要显示的文字
* @param view 要添加的View
*/
+ (void)showWarn:(NSString *)Warn ToView:(UIView *)view;
/**
* 文字+菊花提示,不自动消失
*
* @param message 要显示的文字
* @param view 要添加的View
*
* @return MBProgressHUD
*/
+ (MBProgressHUD *)showMessage:(NSString *)message ToView:(UIView *)view;
/**
* 快速显示一条提示信息
*
* @param showAutoMessage 要显示的文字
*/
+ (void)showAutoMessage:(NSString *)message;
/**
* 自动消失提示,无图
*
* @param message 要显示的文字
* @param view 要添加的View
*/
+ (void)showAutoMessage:(NSString *)message ToView:(UIView *)view;
/**
* 自定义停留时间,有图
*
* @param message 要显示的文字
* @param view 要添加的View
* @param time 停留时间
*/
+(void)showIconMessage:(NSString *)message ToView:(UIView *)view RemainTime:(CGFloat)time;
/**
* 自定义停留时间,无图
*
* @param text 要显示的文字
* @param view 要添加的View
* @param time 停留时间
*/
+(void)showMessage:(NSString *)message ToView:(UIView *)view RemainTime:(CGFloat)time;
/**
* 加载视图
*
* @param view 要添加的View
*/
+ (void)showLoadToView:(UIView *)view;
/**
* 进度条View
*
* @param view 要添加的View
* @param model 进度条的样式
* @param text 显示的文字
*
* @return 返回使用
*/
+ (MBProgressHUD *)showProgressToView:(UIView *)view Text:(NSString *)text;
/**
* 隐藏ProgressView
*
* @param view superView
*/
+ (void)hideHUDForView:(UIView *)view;
/**
* 快速从window中隐藏ProgressView
*/
+ (void)hideHUD;
@end

View File

@@ -0,0 +1,145 @@
//
// MBProgressHUD+SUP.m
// SuperProject
//
// Created by NShunJian on 2018/1/20.
// Copyright © 2018 superMan. All rights reserved.
//
#import "MBProgressHUD+SUP.h"
@implementation MBProgressHUD (SUP)
#pragma mark
+ (void)showError:(NSString *)error ToView:(UIView *)view{
[self showCustomIcon:@"MBHUD_Error" Title:error ToView:view];
}
+ (void)showSuccess:(NSString *)success ToView:(UIView *)view
{
[self showCustomIcon:@"MBHUD_Success" Title:success ToView:view];
}
+ (void)showInfo:(NSString *)Info ToView:(UIView *)view
{
[self showCustomIcon:@"MBHUD_Info" Title:Info ToView:view];
}
+ (void)showWarn:(NSString *)Warn ToView:(UIView *)view
{
[self showCustomIcon:@"MBHUD_Warn" Title:Warn ToView:view];
}
#pragma mark
+ (MBProgressHUD *)showMessage:(NSString *)message ToView:(UIView *)view {
if (view == nil) view = (UIView*)[UIApplication sharedApplication].delegate.window;
//
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.mode=MBProgressHUDModeText;
hud.label.text=message;
hud.label.font= [UIFont systemFontOfSize:15];
//
hud.removeFromSuperViewOnHide = YES;
//
// hud.dimBackground = YES;
hud.backgroundView.style = MBProgressHUDBackgroundStyleSolidColor;
return hud;
}
//
+(void)showLoadToView:(UIView *)view{
[self showMessage:@"加载中..." ToView:view];
}
/**
* View
*/
+ (MBProgressHUD *)showProgressToView:(UIView *)view Text:(NSString *)text{
if (view == nil) view = (UIView*)[UIApplication sharedApplication].delegate.window;
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.label.text=text;
hud.label.font= [UIFont systemFontOfSize:15];
//
hud.backgroundView.style = MBProgressHUDBackgroundStyleBlur;
return hud;
}
//
+ (void)showAutoMessage:(NSString *)message{
[self showAutoMessage:message ToView:nil];
}
//
+ (void)showAutoMessage:(NSString *)message ToView:(UIView *)view{
[self showMessage:message ToView:view RemainTime:1 Model:MBProgressHUDModeText];
}
//
+(void)showIconMessage:(NSString *)message ToView:(UIView *)view RemainTime:(CGFloat)time{
[self showMessage:message ToView:view RemainTime:time Model:MBProgressHUDModeIndeterminate];
}
//
+(void)showMessage:(NSString *)message ToView:(UIView *)view RemainTime:(CGFloat)time{
[self showMessage:message ToView:view RemainTime:time Model:MBProgressHUDModeText];
}
+(void)showMessage:(NSString *)message ToView:(UIView *)view RemainTime:(CGFloat)time Model:(MBProgressHUDMode)model{
if (view == nil) view = (UIView*)[UIApplication sharedApplication].delegate.window;
//
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.label.text=message;
hud.label.font= [UIFont systemFontOfSize:15];
//
hud.mode = model;
//
hud.removeFromSuperViewOnHide = YES;
//
hud.backgroundView.style = MBProgressHUDBackgroundStyleSolidColor;
//
hud.removeFromSuperViewOnHide = YES;
// X
[hud hideAnimated:YES afterDelay:time];
}
+ (void)showCustomIcon:(NSString *)iconName Title:(NSString *)title ToView:(UIView *)view
{
if (view == nil) view = (UIView*)[UIApplication sharedApplication].delegate.window;
//
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.label.text=title;
hud.label.font= [UIFont systemFontOfSize:15];
//
hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:iconName]];
//
hud.mode = MBProgressHUDModeCustomView;
//
hud.removeFromSuperViewOnHide = YES;
//
hud.backgroundView.style = MBProgressHUDBackgroundStyleSolidColor;
// 3
[hud hideAnimated:YES afterDelay:1];
}
+ (void)hideHUDForView:(UIView *)view
{
if (view == nil) view = (UIView*)[UIApplication sharedApplication].delegate.window;
[self hideHUDForView:view animated:YES];
}
+ (void)hideHUD
{
[self hideHUDForView:nil];
}
@end

View File

@@ -0,0 +1,17 @@
//
// MHChatTableView.h
// MoHuanXingYu
//
// Created by 马方圆 on 2021/5/18.
// Copyright © 2021 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface MHChatTableView : UITableView
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,25 @@
//
// MHChatTableView.m
// MoHuanXingYu
//
// Created by on 2021/5/18.
// Copyright © 2021 MoHuanXingYu. All rights reserved.
//
#import "MHChatTableView.h"
@implementation MHChatTableView
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[[[self nextResponder] nextResponder] nextResponder] touchesBegan:touches withEvent:event];
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[[[[self nextResponder] nextResponder] nextResponder] touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[[[[self nextResponder] nextResponder] nextResponder] touchesEnded:touches withEvent:event];
}
@end

View File

@@ -0,0 +1,31 @@
//
// NSDate+HKExtension.h
// 百思不得姐--001
//
// Created by Mask on 16/7/3.
// Copyright © 2016年 Mask. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDate (Extension)
/** 求出时间差值 */
-(NSDateComponents *)dateFrom:(NSDate *)from;
/**
* 是否为今年
*/
-(BOOL)isThisYear;
/**
* 是否为今天
*/
-(BOOL)isToday;
/**
* 是否为昨天
*/
-(BOOL)isYesterday;
@end

View File

@@ -0,0 +1,86 @@
//
// NSDate+HKExtension.m
// --001
//
// Created by Mask on 16/7/3.
// Copyright © 2016 Mask. All rights reserved.
//
#import "NSDate+Extension.h"
@implementation NSDate (Extension)
-(NSDateComponents *)dateFrom:(NSDate *)from
{
//
NSCalendar * calender = [NSCalendar currentCalendar];
//
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
return [calender components:unit fromDate:from toDate:self options:kNilOptions];
}
-(BOOL)isThisYear
{
//
NSCalendar * calendar = [NSCalendar currentCalendar];
NSInteger nowYear = [calendar component:NSCalendarUnitYear fromDate:[NSDate date]];
NSInteger selfYear = [calendar component:NSCalendarUnitYear fromDate:self];
return nowYear == selfYear;
}
-(BOOL)isToday
{
//
NSCalendar * calendar = [NSCalendar currentCalendar];
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents * nowCmps = [calendar components:unit fromDate:[NSDate date]];
NSDateComponents * selfCmps = [calendar components:unit fromDate:self];
return nowCmps.year == selfCmps.year
&& nowCmps.month == selfCmps.month
&& nowCmps.day == selfCmps.day;
//
// NSDateFormatter * fmt = [[NSDateFormatter alloc]init];
// fmt.dateFormat = @"yyyy-MM-dd";//2016-3-5 2016-3-5
//
// NSString * nowStr = [fmt stringFromDate:[NSDate date]];
// NSString * selfStr = [fmt stringFromDate:self];
// return [nowStr isEqualToString:selfStr];
}
-(BOOL)isYesterday
{
/* 24 :
2016-1-1 00:00:00
2015-12-31 00:00:00
*/
//
NSDateFormatter * fmt = [[NSDateFormatter alloc]init];
fmt.dateFormat = @"yyyy-MM-dd";
//
NSString * nowStr = [fmt stringFromDate:[NSDate date]];
NSDate * nowDate = [fmt dateFromString:nowStr];
NSString * selfStr = [fmt stringFromDate:self];
NSDate * selfDate = [fmt dateFromString:selfStr];
//
NSCalendar * calendar = [NSCalendar currentCalendar];
//
NSDateComponents * cmps = [calendar components:NSCalendarUnitYear |NSCalendarUnitMonth | NSCalendarUnitDay fromDate:selfDate toDate:nowDate options:0];
return cmps.year == 0
&& cmps.month == 0
&& cmps.day == 1;
}
@end

View File

@@ -0,0 +1,22 @@
//
// NSString+Mobile.h
// RecruitmentProduct
//
// Created by zy on 16/4/16.
// Copyright © 2016年 RunShengInformation. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSString (Mobile)
//手机号是否正确
+ (NSString *)valiMobile:(NSString *)mobile;
//邮箱是否正确
+ (BOOL)isValidateEmail:(NSString *)Email;
+(NSString *)argumentParse:(NSString *)Value positive:(BOOL)isPositive type:(NSString *)typeStr;
//字符串是否为纯数字
+ (BOOL)isPureInt:(NSString *)string;
@end

View File

@@ -0,0 +1,87 @@
//
// NSString+Mobile.m
// RecruitmentProduct
//
// Created by zy on 16/4/16.
// Copyright © 2016 RunShengInformation. All rights reserved.
//
#import "NSString+Mobile.h"
@implementation NSString (Mobile)
+ (BOOL)isPureInt:(NSString *)string{
NSScanner* scan = [NSScanner scannerWithString:string];
int val;
return [scan scanInt:&val] && [scan isAtEnd];
}
+ (NSString *)valiMobile:(NSString *)mobile{
if (mobile.length < 11)
{
return @"手机号长度只能是11位";
}else{
/**
*
*/
NSString *CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
/**
*
*/
NSString *CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
/**
*
*/
NSString *CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
if (isMatch1 || isMatch2 || isMatch3) {
return nil;
}else{
return @"请输入正确的手机号码";
}
}
return nil;
}
#pragma mark --
+(NSString *)argumentParse:(NSString *)Value positive:(BOOL)isPositive type:(NSString *)typeStr{
NSString *dicKey;
NSString *dicValue;
if (isPositive) {
dicKey = @"dicKey";
dicValue = @"dicValue";
}else {
dicKey = @"dicValue";
dicValue = @"dicKey";
}
NSString *path = [[NSBundle mainBundle]pathForResource:typeStr ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:path];
NSArray * array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
for (NSDictionary *dic in array) {
if ([Value isEqualToString:[NSString stringWithFormat:@"%@",dic[dicKey]]]) {
return dic[dicValue];
}
}
return nil;
}
+ (BOOL)isValidateEmail:(NSString *)Email
{
NSString *emailCheck = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES%@",emailCheck];
return [emailTest evaluateWithObject:Email];
}
@end

View File

@@ -0,0 +1,26 @@
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface NSString (String)
-(CGSize)sizeWithFont:(UIFont *)font With:(CGFloat)with;
-(CGSize)sizeWithFont:(UIFont *)font hiegth:(CGFloat)hiegth;
/**
* 根据文件名返回文件在Documents下的路径
*
* @param filename 文件名字
*
* @return 文件路径
*/
+(NSString *)filePathInDocumentsWithFileName:(NSString *)filename;
+ (NSString*)dictionaryToJson:(NSDictionary *)dic;
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonStr;
@end

View File

@@ -0,0 +1,51 @@
#import "NSString+String.h"
@implementation NSString (String)
-(CGSize)sizeWithFont:(UIFont *)font With:(CGFloat)with{
CGSize size = CGSizeMake(with, MAXFLOAT);//
NSDictionary *att = @{NSFontAttributeName : font};//
CGRect rect = [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:att context:nil];//
return rect.size;
}
-(CGSize)sizeWithFont:(UIFont *)font hiegth:(CGFloat)hiegth{
CGSize size = CGSizeMake(MAXFLOAT, hiegth);//
NSDictionary *att = @{NSFontAttributeName : font};//
CGRect rect = [self boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:att context:nil];
return rect.size;
}
+(NSString *)filePathInDocumentsWithFileName:(NSString *)filename{
NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:filename];
return filePath;
}
+ (NSString *)dictionaryToJson:(NSDictionary *)dic
{
NSError *parseError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonStr{
NSData *data = [jsonStr dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *tempDic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
return tempDic;
}
@end

View File

@@ -0,0 +1,38 @@
//
// UIButton+Badge.h
// MoHuanXingYu
//
// Created by aa on 2019/7/23.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIButton (Badge)
@property (strong, nonatomic) UILabel *badge;
// Badge value to be display
@property (nonatomic) NSString *badgeValue;
// Badge background color
@property (nonatomic) UIColor *badgeBGColor;
// Badge text color
@property (nonatomic) UIColor *badgeTextColor;
// Badge font
@property (nonatomic) UIFont *badgeFont;
// Padding value for the badge
@property (nonatomic) CGFloat badgePadding;
// Minimum size badge to small
@property (nonatomic) CGFloat badgeMinSize;
// Values for offseting the badge over the BarButtonItem you picked
@property (nonatomic) CGFloat badgeOriginX;
@property (nonatomic) CGFloat badgeOriginY;
// In case of numbers, remove the badge when reaching zero
@property BOOL shouldHideBadgeAtZero;
// Badge has a bounce animation when value changes
@property BOOL shouldAnimateBadge;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,281 @@
//
// UIButton+Badge.m
// MoHuanXingYu
//
// Created by aa on 2019/7/23.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "UIButton+Badge.h"
#import <objc/runtime.h>
NSString const *UIButton_badgeKey = @"UIButton_badgeKey";
NSString const *UIButton_badgeBGColorKey = @"UIButton_badgeBGColorKey";
NSString const *UIButton_badgeTextColorKey = @"UIButton_badgeTextColorKey";
NSString const *UIButton_badgeFontKey = @"UIButton_badgeFontKey";
NSString const *UIButton_badgePaddingKey = @"UIButton_badgePaddingKey";
NSString const *UIButton_badgeMinSizeKey = @"UIButton_badgeMinSizeKey";
NSString const *UIButton_badgeOriginXKey = @"UIButton_badgeOriginXKey";
NSString const *UIButton_badgeOriginYKey = @"UIButton_badgeOriginYKey";
NSString const *UIButton_shouldHideBadgeAtZeroKey = @"UIButton_shouldHideBadgeAtZeroKey";
NSString const *UIButton_shouldAnimateBadgeKey = @"UIButton_shouldAnimateBadgeKey";
NSString const *UIButton_badgeValueKey = @"UIButton_badgeValueKey";
@implementation UIButton (Badge)
@dynamic badgeValue, badgeBGColor, badgeTextColor, badgeFont;
@dynamic badgePadding, badgeMinSize, badgeOriginX, badgeOriginY;
@dynamic shouldHideBadgeAtZero, shouldAnimateBadge;
- (void)badgeInit
{
// Default design initialization
self.badgeBGColor = [UIColor redColor];
self.badgeTextColor = [UIColor whiteColor];
self.badgeFont = [UIFont systemFontOfSize:12.0];
self.badgePadding = 6;
self.badgeMinSize = 8;
self.badgeOriginX = self.frame.size.width - self.badge.frame.size.width/2;
self.badgeOriginY = -4;
self.shouldHideBadgeAtZero = YES;
self.shouldAnimateBadge = YES;
// Avoids badge to be clipped when animating its scale
self.clipsToBounds = NO;
}
#pragma mark - Utility methods
// Handle badge display when its properties have been changed (color, font, ...)
- (void)refreshBadge
{
// Change new attributes
self.badge.textColor = self.badgeTextColor;
self.badge.backgroundColor = self.badgeBGColor;
self.badge.font = self.badgeFont;
}
- (CGSize) badgeExpectedSize
{
// When the value changes the badge could need to get bigger
// Calculate expected size to fit new value
// Use an intermediate label to get expected size thanks to sizeToFit
// We don't call sizeToFit on the true label to avoid bad display
UILabel *frameLabel = [self duplicateLabel:self.badge];
[frameLabel sizeToFit];
CGSize expectedLabelSize = frameLabel.frame.size;
return expectedLabelSize;
}
- (void)updateBadgeFrame
{
CGSize expectedLabelSize = [self badgeExpectedSize];
// Make sure that for small value, the badge will be big enough
CGFloat minHeight = expectedLabelSize.height;
// Using a const we make sure the badge respect the minimum size
minHeight = (minHeight < self.badgeMinSize) ? self.badgeMinSize : expectedLabelSize.height;
CGFloat minWidth = expectedLabelSize.width;
CGFloat padding = self.badgePadding;
// Using const we make sure the badge doesn't get too smal
minWidth = (minWidth < minHeight) ? minHeight : expectedLabelSize.width;
self.badge.frame = CGRectMake(self.badgeOriginX, self.badgeOriginY, minWidth + padding, minHeight + padding);
self.badge.layer.cornerRadius = (minHeight + padding) / 2;
self.badge.layer.masksToBounds = YES;
}
// Handle the badge changing value
- (void)updateBadgeValueAnimated:(BOOL)animated
{
// Bounce animation on badge if value changed and if animation authorized
if (animated && self.shouldAnimateBadge && ![self.badge.text isEqualToString:self.badgeValue]) {
CABasicAnimation * animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
[animation setFromValue:[NSNumber numberWithFloat:1.5]];
[animation setToValue:[NSNumber numberWithFloat:1]];
[animation setDuration:0.2];
[animation setTimingFunction:[CAMediaTimingFunction functionWithControlPoints:.4f :1.3f :1.f :1.f]];
[self.badge.layer addAnimation:animation forKey:@"bounceAnimation"];
}
// Set the new value
self.badge.text = self.badgeValue;
// Animate the size modification if needed
NSTimeInterval duration = animated ? 0.2 : 0;
[UIView animateWithDuration:duration animations:^{
[self updateBadgeFrame];
}];
}
- (UILabel *)duplicateLabel:(UILabel *)labelToCopy
{
UILabel *duplicateLabel = [[UILabel alloc] initWithFrame:labelToCopy.frame];
duplicateLabel.text = labelToCopy.text;
duplicateLabel.font = labelToCopy.font;
return duplicateLabel;
}
- (void)removeBadge
{
// Animate badge removal
[UIView animateWithDuration:0.2 animations:^{
self.badge.transform = CGAffineTransformMakeScale(0, 0);
} completion:^(BOOL finished) {
[self.badge removeFromSuperview];
self.badge = nil;
}];
}
#pragma mark - getters/setters
-(UILabel*) badge {
return objc_getAssociatedObject(self, &UIButton_badgeKey);
}
-(void)setBadge:(UILabel *)badgeLabel
{
objc_setAssociatedObject(self, &UIButton_badgeKey, badgeLabel, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
// Badge value to be display
-(NSString *)badgeValue {
return objc_getAssociatedObject(self, &UIButton_badgeValueKey);
}
-(void) setBadgeValue:(NSString *)badgeValue
{
objc_setAssociatedObject(self, &UIButton_badgeValueKey, badgeValue, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
// When changing the badge value check if we need to remove the badge
if (!badgeValue || [badgeValue isEqualToString:@""] || ([badgeValue isEqualToString:@"0"] && self.shouldHideBadgeAtZero)) {
[self removeBadge];
} else if (!self.badge) {
// Create a new badge because not existing
self.badge = [[UILabel alloc] initWithFrame:CGRectMake(self.badgeOriginX, self.badgeOriginY, 20, 20)];
self.badge.textColor = self.badgeTextColor;
self.badge.backgroundColor = self.badgeBGColor;
self.badge.font = self.badgeFont;
self.badge.textAlignment = NSTextAlignmentCenter;
[self badgeInit];
[self addSubview:self.badge];
[self updateBadgeValueAnimated:NO];
} else {
[self updateBadgeValueAnimated:YES];
}
}
// Badge background color
-(UIColor *)badgeBGColor {
return objc_getAssociatedObject(self, &UIButton_badgeBGColorKey);
}
-(void)setBadgeBGColor:(UIColor *)badgeBGColor
{
objc_setAssociatedObject(self, &UIButton_badgeBGColorKey, badgeBGColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self refreshBadge];
}
}
// Badge text color
-(UIColor *)badgeTextColor {
return objc_getAssociatedObject(self, &UIButton_badgeTextColorKey);
}
-(void)setBadgeTextColor:(UIColor *)badgeTextColor
{
objc_setAssociatedObject(self, &UIButton_badgeTextColorKey, badgeTextColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self refreshBadge];
}
}
// Badge font
-(UIFont *)badgeFont {
return objc_getAssociatedObject(self, &UIButton_badgeFontKey);
}
-(void)setBadgeFont:(UIFont *)badgeFont
{
objc_setAssociatedObject(self, &UIButton_badgeFontKey, badgeFont, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self refreshBadge];
}
}
// Padding value for the badge
-(CGFloat) badgePadding {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_badgePaddingKey);
return number.floatValue;
}
-(void) setBadgePadding:(CGFloat)badgePadding
{
NSNumber *number = [NSNumber numberWithDouble:badgePadding];
objc_setAssociatedObject(self, &UIButton_badgePaddingKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self updateBadgeFrame];
}
}
// Minimum size badge to small
-(CGFloat) badgeMinSize {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_badgeMinSizeKey);
return number.floatValue;
}
-(void) setBadgeMinSize:(CGFloat)badgeMinSize
{
NSNumber *number = [NSNumber numberWithDouble:badgeMinSize];
objc_setAssociatedObject(self, &UIButton_badgeMinSizeKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self updateBadgeFrame];
}
}
// Values for offseting the badge over the BarButtonItem you picked
-(CGFloat) badgeOriginX {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_badgeOriginXKey);
return number.floatValue;
}
-(void) setBadgeOriginX:(CGFloat)badgeOriginX
{
NSNumber *number = [NSNumber numberWithDouble:badgeOriginX];
objc_setAssociatedObject(self, &UIButton_badgeOriginXKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self updateBadgeFrame];
}
}
-(CGFloat) badgeOriginY {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_badgeOriginYKey);
return number.floatValue;
}
-(void) setBadgeOriginY:(CGFloat)badgeOriginY
{
NSNumber *number = [NSNumber numberWithDouble:badgeOriginY];
objc_setAssociatedObject(self, &UIButton_badgeOriginYKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
if (self.badge) {
[self updateBadgeFrame];
}
}
// In case of numbers, remove the badge when reaching zero
-(BOOL) shouldHideBadgeAtZero {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_shouldHideBadgeAtZeroKey);
return number.boolValue;
}
- (void)setShouldHideBadgeAtZero:(BOOL)shouldHideBadgeAtZero
{
NSNumber *number = [NSNumber numberWithBool:shouldHideBadgeAtZero];
objc_setAssociatedObject(self, &UIButton_shouldHideBadgeAtZeroKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
// Badge has a bounce animation when value changes
-(BOOL) shouldAnimateBadge {
NSNumber *number = objc_getAssociatedObject(self, &UIButton_shouldAnimateBadgeKey);
return number.boolValue;
}
- (void)setShouldAnimateBadge:(BOOL)shouldAnimateBadge
{
NSNumber *number = [NSNumber numberWithBool:shouldAnimateBadge];
objc_setAssociatedObject(self, &UIButton_shouldAnimateBadgeKey, number, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
@end

View File

@@ -0,0 +1,14 @@
//
// UIButton+HXExtension.h
// HXPhotoPickerExample
//
// Created by Silence on 17/2/16.
// Copyright © 2017年 Silence. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIButton (HXExtension)
/** 扩大buuton点击范围 */
- (void)hx_setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left;
@end

View File

@@ -0,0 +1,53 @@
//
// UIButton+HXExtension.m
// HXPhotoPickerExample
//
// Created by Silence on 17/2/16.
// Copyright © 2017 Silence. All rights reserved.
//
#import "UIButton+HXExtension.h"
#import <objc/runtime.h>
@implementation UIButton (HXExtension)
static char topNameKey;
static char rightNameKey;
static char bottomNameKey;
static char leftNameKey;
- (void)hx_setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left
{
objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC);
objc_setAssociatedObject(self, &rightNameKey, [NSNumber numberWithFloat:right], OBJC_ASSOCIATION_COPY_NONATOMIC);
objc_setAssociatedObject(self, &bottomNameKey, [NSNumber numberWithFloat:bottom], OBJC_ASSOCIATION_COPY_NONATOMIC);
objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC);
}
- (CGRect)enlargedRect{
NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);
NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);
NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);
NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);
if (topEdge && rightEdge && bottomEdge && leftEdge){
return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,
self.bounds.origin.y - topEdge.floatValue,
self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,
self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);
} else{
return self.bounds;
}
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
CGRect rect = [self enlargedRect];
if (CGRectEqualToRect(rect, self.bounds)){
return [super pointInside:point withEvent:event];
}else{
return CGRectContainsPoint(rect, point);
}
}
@end

View File

@@ -0,0 +1,36 @@
//
// UIImage+Additions.h
// GoldCow
//
// Created by haiwei on 15/6/1.
// Copyright (c) 2015年 ddsfsdfsd. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface UIImage (Additions)
+ (UIImage *)imageWithColor:(UIColor *)color withSize:(CGSize)size;
+ (UIImage *)imageWithColor:(UIColor *)color;
- (UIImage *)imageByCropToRect:(CGRect)rect;
///**
// 返回一个gif图片
//
// @param data 二进制数据
// */
//+ (UIImage *)sd_animatedGIFWithData:(NSData *)data;
/**
返回一个gif图片
@param name 本地的gif名称(不需要后缀)
*/
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name;
+ (UIImage *)xy_getVideoThumbnail:(NSString *)filePath;
@end

View File

@@ -0,0 +1,172 @@
//
// UIImage+Additions.m
// GoldCow
//
// Created by haiwei on 15/6/1.
// Copyright (c) 2015 ddsfsdfsd. All rights reserved.
//
#import "UIImage+Additions.h"
#import <ImageIO/ImageIO.h>
@implementation UIImage (Additions)
+ (UIImage *)imageWithColor:(UIColor *)color withSize:(CGSize)size {
CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
+ (UIImage *)imageWithColor:(UIColor *)color {
return [UIImage imageWithColor:color withSize:CGSizeMake(1, 1)];
}
- (UIImage *)imageByCropToRect:(CGRect)rect {
rect.origin.x *= self.scale;
rect.origin.y *= self.scale;
rect.size.width *= self.scale;
rect.size.height *= self.scale;
if (rect.size.width <= 0 || rect.size.height <= 0) return nil;
CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, rect);
UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];
CGImageRelease(imageRef);
return image;
}
+ (UIImage *)sd_animatedGIFNamed:(NSString *)name {
CGFloat scale = [UIScreen mainScreen].scale;
if (scale > 1.0f) {
NSString *retinaPath = [[NSBundle mainBundle] pathForResource:[name stringByAppendingString:@"@2x"] ofType:@"gif"];
NSData *data = [NSData dataWithContentsOfFile:retinaPath];
if (data) {
return [UIImage animatedGIFWithData:data];
}
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
data = [NSData dataWithContentsOfFile:path];
if (data) {
return [UIImage animatedGIFWithData:data];
}
return [UIImage imageNamed:name];
}
else {
NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:@"gif"];
NSData *data = [NSData dataWithContentsOfFile:path];
if (data) {
return [UIImage animatedGIFWithData:data];
}
return [UIImage imageNamed:name];
}
}
+ (UIImage *)animatedGIFWithData:(NSData *)data {
if (!data) {
return nil;
}
//
CGImageSourceRef source = CGImageSourceCreateWithData((__bridge CFDataRef)data, NULL);
// (gif)
size_t count = CGImageSourceGetCount(source);
UIImage *animatedImage;
if (count <= 1) {
animatedImage = [[UIImage alloc] initWithData:data];
}
else {
NSMutableArray *images = [NSMutableArray array];
NSTimeInterval duration = 0.0f;
for (size_t i = 0; i < count; i++) {
CGImageRef image = CGImageSourceCreateImageAtIndex(source, i, NULL);
duration += [UIImage frameDurationAtIndex:i source:source];
[images addObject:[UIImage imageWithCGImage:image scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]];
CGImageRelease(image);
}
//
// 1/10 *
if (!duration) {
duration = (1.0f / 10.0f) * count;
}
animatedImage = [UIImage animatedImageWithImages:images duration:duration];
}
CFRelease(source);
return animatedImage;
}
+ (float)frameDurationAtIndex:(NSUInteger)index source:(CGImageSourceRef)source {
float frameDuration = 0.1f;
//
CFDictionaryRef cfFrameProperties = CGImageSourceCopyPropertiesAtIndex(source, index, nil);
NSDictionary *frameProperties = (__bridge NSDictionary *)cfFrameProperties;
NSDictionary *gifProperties = frameProperties[(NSString *)kCGImagePropertyGIFDictionary];
//
NSNumber *delayTimeUnclampedProp = gifProperties[(NSString *)kCGImagePropertyGIFUnclampedDelayTime];
if (delayTimeUnclampedProp) {
frameDuration = [delayTimeUnclampedProp floatValue];
}
else {
NSNumber *delayTimeProp = gifProperties[(NSString *)kCGImagePropertyGIFDelayTime];
if (delayTimeProp) {
frameDuration = [delayTimeProp floatValue];
}
}
// Many annoying ads specify a 0 duration to make an image flash as quickly as possible.
// We follow Firefox's behavior and use a duration of 100 ms for any frames that specify
// a duration of <= 10 ms. See <rdar://problem/7689300> and <http://webkit.org/b/36082>
// for more information.
if (frameDuration < 0.011f) {
frameDuration = 0.100f;
}
CFRelease(cfFrameProperties);
return frameDuration;
}
+ (UIImage *)xy_getVideoThumbnail:(NSString *)filePath
{
NSURL *sourceURL = [NSURL fileURLWithPath:filePath];
AVAsset *asset = [AVAsset assetWithURL:sourceURL];
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc]initWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform = YES;
CMTime time = CMTimeMake(0, 1);
NSError *error;
CGImageRef imageRef = [imageGenerator copyCGImageAtTime:time actualTime:NULL error:&error];
UIImage *thumbnail = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef); // CGImageRef won't be released by ARC
return thumbnail;
}
@end

View File

@@ -0,0 +1,17 @@
//
// UIImage+ImgSize.h
// MoHuanXingYu
//
// Created by aa on 2019/7/10.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (ImgSize)
+ (CGSize)getImageSizeWithURL:(id)URL;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,86 @@
//
// UIImage+ImgSize.m
// MoHuanXingYu
//
// Created by aa on 2019/7/10.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "UIImage+ImgSize.h"
#import <ImageIO/ImageIO.h>
@implementation UIImage (ImgSize)
/**
* url
*/
+ (CGSize)getImageSizeWithURL:(id)URL{
NSURL * url = nil;
if ([URL isKindOfClass:[NSURL class]]) {
url = URL;
}
if ([URL isKindOfClass:[NSString class]]) {
url = [NSURL URLWithString:URL];
}
if (!URL) {
return CGSizeZero;
}
CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
CGFloat width = 0, height = 0;
if (imageSourceRef) {
//
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);
//3264
if (imageProperties != NULL) {
CFNumberRef widthNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
#if defined(__LP64__) && __LP64__
if (widthNumberRef != NULL) {
CFNumberGetValue(widthNumberRef, kCFNumberFloat64Type, &width);
}
CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
if (heightNumberRef != NULL) {
CFNumberGetValue(heightNumberRef, kCFNumberFloat64Type, &height);
}
#else
if (widthNumberRef != NULL) {
CFNumberGetValue(widthNumberRef, kCFNumberFloat32Type, &width);
}
CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
if (heightNumberRef != NULL) {
CFNumberGetValue(heightNumberRef, kCFNumberFloat32Type, &height);
}
#endif
/***************** *****************/
//
NSInteger orientation = [(__bridge NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyOrientation) integerValue];
CGFloat temp = 0;
switch (orientation) { //
case UIImageOrientationLeft: // 90
case UIImageOrientationRight: // 90
case UIImageOrientationLeftMirrored: // 90
case UIImageOrientationRightMirrored: { // 90
temp = width;
width = height;
height = temp;
}
break;
default:
break;
}
/***************** *****************/
CFRelease(imageProperties);
}
CFRelease(imageSourceRef);
}
return CGSizeMake(width, height);
}
@end

View File

@@ -0,0 +1,19 @@
//
// UISearchBar+custom.h
// MoHuanXingYu
//
// Created by aa on 2019/7/27.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UISearchBar (custom)
- (void)fm_setCancelButtonTitle:(NSString *)title;
- (void)fm_setTextColor:(UIColor *)textColor;
- (void)fm_setTextFont:(UIFont *)font;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,28 @@
//
// UISearchBar+custom.m
// MoHuanXingYu
//
// Created by aa on 2019/7/27.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "UISearchBar+custom.h"
@implementation UISearchBar (custom)
- (void)fm_setCancelButtonTitle:(NSString *)title {
[[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTitle:title];
}
- (void)fm_setTextColor:(UIColor *)textColor {
[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].textColor = textColor;
}
- (void)fm_setTextFont:(UIFont *)font {
[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].font = font;
}
@end

View File

@@ -0,0 +1,20 @@
//
// UITabBar+Badge.h
// MoHuanXingYu
//
// Created by aa on 2019/9/26.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UITabBar (Badge)
- (void)showBadgeOnItemIndex:(int)index color:(UIColor *)color withCount:(NSInteger)count; //显示小红点
- (void)hideBadgeOnItemIndex:(int)index; //隐藏小红点
- (void)showBageOnItemWithIndex:(int)index value:(NSString *)valueStr color:(UIColor *)color;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,85 @@
//
// UITabBar+Badge.m
// MoHuanXingYu
//
// Created by aa on 2019/9/26.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "UITabBar+Badge.h"
#define TabbarItemNums 4.0
@implementation UITabBar (Badge)
//
- (void)showBadgeOnItemIndex:(int)index color:(UIColor *)color withCount:(NSInteger)count{
//
[self removeBadgeOnItemIndex:index];
//
UIView *badgeView = [[UIView alloc]init];
badgeView.tag = 888 + index;
badgeView.layer.cornerRadius = 15/2;//
badgeView.backgroundColor = color;//
badgeView.layer.borderWidth = 1;
badgeView.layer.borderColor = kWhiteColor.CGColor;
CGRect tabFrame = self.frame;
UILabel *messageCount = [ControlCreator createLabel:nil rect:CGRectZero text:@"0" font:YBMediumFont(10) color:kWhiteColor backguoundColor:kClearColor align:(NSTextAlignmentCenter) lines:1];
[badgeView addSubview:messageCount];
messageCount.text = [NSString stringWithFormat:@"%ld",count];
//
float percentX = (index + 0.6) / TabbarItemNums;
CGFloat x = ceilf(percentX * tabFrame.size.width);
CGFloat y = ceilf(0.1 * tabFrame.size.height);
badgeView.frame = CGRectMake(x, 0, 15, 15);//10
[self addSubview:badgeView];
[badgeView addSubview:messageCount];
if (count > 9){
badgeView.frame = CGRectMake(x, 0, 20, 15);//10
}
[messageCount mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.centerX.equalTo(badgeView);
}];
}
//
- (void)hideBadgeOnItemIndex:(int)index{
//
[self removeBadgeOnItemIndex:index];
}
//
- (void)removeBadgeOnItemIndex:(int)index{
//tag
for (UIView *subView in self.subviews) {
if (subView.tag == 888+index || subView.tag == 100 + index) {
[subView removeFromSuperview];
}
}
}
- (void)showBageOnItemWithIndex:(int)index value:(NSString *)valueStr color:(UIColor *)color{
//
[self removeBadgeOnItemIndex:index];
UILabel *badgeLabel = [[UILabel alloc] init];
badgeLabel.tag = 100 + index;
CGRect tabFrame = self.frame;
//
float percentX = (index +0.6) / TabbarItemNums;
CGFloat x = ceilf(percentX * tabFrame.size.width);
CGFloat y = ceilf(0.1 * tabFrame.size.height);
badgeLabel.frame = CGRectMake(x, y, 12, 12);//12
badgeLabel.layer.cornerRadius = 6;//
badgeLabel.layer.masksToBounds = YES;
badgeLabel.backgroundColor = color;//
[self addSubview:badgeLabel];
badgeLabel.text = valueStr;
badgeLabel.textColor = [UIColor whiteColor];
badgeLabel.font = Font(10);
badgeLabel.textAlignment = NSTextAlignmentCenter;
}
@end

View File

@@ -0,0 +1,28 @@
//
// UITableViewCell+CSCellShadows.h
// CoinShang
//
// Created by Jiayu_iOSer on 2018/11/27.
// Copyright © 2018 Shangbee. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UITableViewCell (CSCellShadows)
/*
/ 给tableview section 添加圆角
/
*/
- (void)addShadowToSectionTableView:(UITableView *)tableView
atIndexPath:(NSIndexPath *)indexPath;
/** adds a drop shadow to the background view of the (grouped) cell */
- (void)addShadowToCellInTableView:(UITableView *)tableView
atIndexPath:(NSIndexPath *)indexPath;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,182 @@
//
// UITableViewCell+CSCellShadows.m
// CoinShang
//
// Created by Jiayu_iOSer on 2018/11/27.
// Copyright © 2018 Shangbee. All rights reserved.
//
#import "UITableViewCell+CSCellShadows.h"
@implementation UITableViewCell (CSCellShadows)
- (void)addShadowToCellInTableView:(UITableView *)tableView
atIndexPath:(NSIndexPath *)indexPath
{
// section
BOOL isFirstRow = !indexPath.row;// cell
BOOL isLastRow = (indexPath.row == [tableView numberOfRowsInSection:indexPath.section] - 1);//cell
BOOL isSectionOneRow = ([tableView numberOfRowsInSection:indexPath.section] == 1);// cell
// the shadow rect determines the area in which the shadow gets drawn
CGRect shadowRect = CGRectInset(CGRectMake(0, 0, ScreenWidth, self.frame.size.height), 10, -10);
if(isFirstRow)
shadowRect.origin.y += 10;
else if(isLastRow)
shadowRect.size.height -= 10;
// the mask rect ensures that the shadow doesn't bleed into other table cells
CGRect maskRect = CGRectInset(CGRectMake(0, 0, ScreenWidth, self.frame.size.height), -10, 0);
if(isFirstRow) {
maskRect.origin.y -= 10;
maskRect.size.height += 10;
}
else if(isLastRow)
maskRect.size.height += 10;
// section cell
if (isSectionOneRow) {
for (int i = 0; i < 2; i++) {
shadowRect.size.height -= 10;
maskRect.size.height += 5;
}
}
// now configure the background view layer with the shadow
CALayer *layers = self.backgroundView.layer;
layers.shadowColor = [UIColor lightGrayColor].CGColor;
layers.shadowOffset = CGSizeMake(0, 0);
layers.shadowRadius = 2.5;
layers.shadowOpacity = 0.2f;
layers.shadowPath = [UIBezierPath bezierPathWithRoundedRect:shadowRect cornerRadius:8].CGPath;
layers.masksToBounds = NO;
// and finally add the shadow mask
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRect:maskRect].CGPath;
layers.mask = maskLayer;
/*
BOOL isFirstRow = !indexPath.row;
BOOL isLastRow = (indexPath.row == [tableView numberOfRowsInSection:indexPath.section] - 1);
// the shadow rect determines the area in which the shadow gets drawn
CGRect shadowRect = CGRectInset(self.backgroundView.bounds, 0, -10);
if(isFirstRow)
shadowRect.origin.y += 10;
else if(isLastRow)
shadowRect.size.height -= 10;
// the mask rect ensures that the shadow doesn't bleed into other table cells
CGRect maskRect = CGRectInset(self.backgroundView.bounds, -20, 0);
if(isFirstRow) {
maskRect.origin.y -= 10;
maskRect.size.height += 10;
}
else if(isLastRow)
maskRect.size.height += 10;
// now configure the background view layer with the shadow
CALayer *layer = self.backgroundView.layer;
layer.shadowColor = [UIColor redColor].CGColor;
layer.shadowOffset = CGSizeMake(0, 0);
layer.shadowRadius = 3;
layer.shadowOpacity = 0.75;
layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:shadowRect cornerRadius:5].CGPath;
layer.masksToBounds = NO;
// and finally add the shadow mask
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRect:maskRect].CGPath;
layer.mask = maskLayer;
*/
}
/*
/ tableview section
/
*/
- (void)addShadowToSectionTableView:(UITableView *)tableView
atIndexPath:(NSIndexPath *)indexPath{
//
CGFloat cornerRadius = 7.f;
// cell
self.backgroundColor = UIColor.clearColor;
// shapeLayer
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
CAShapeLayer *backgroundLayer = [[CAShapeLayer alloc] init]; //
// Path
CGMutablePathRef pathRef = CGPathCreateMutable();
// cellsize
// , cell bounds, ,
CGRect bounds = CGRectInset(self.bounds, 10, 0);
// CGRectGetMinY
// CGRectGetMaxY
// CGRectGetMinX
// CGRectGetMaxX
// CGRectGetMidX: X
// CGRectGetMidY: Y
// sectionsection
// CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);
// pCGRectGetMinX(bounds), CGRectGetMinY(bounds)p1(x1,y1)(CGRectGetMidX(bounds), CGRectGetMinY(bounds))p2(x2,y2)p1p2线l1pp1线l线r
if (indexPath.row == 0) {
if ([tableView numberOfRowsInSection:indexPath.section] == 1) {
CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));
CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);
CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);
CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);
CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMinX(bounds), CGRectGetMidY(bounds), cornerRadius);
CGPathAddLineToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));
}else{
// cell
CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));
CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);
CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);
// ,
CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));
}
} else if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {
// cell
CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));
CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);
CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);
// 线
CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));
}else {
// cellrectanglepath
CGPathAddRect(pathRef, nil, bounds);
}
// pathrender
layer.path = pathRef;
backgroundLayer.path = pathRef;
// Quartz2Dcreat/copy/retain
CFRelease(pathRef);
// shape layerpathrender
// layer.fillColor = [UIColor colorWithWhite:1.f alpha:0.8f].CGColor;
layer.fillColor = [UIColor whiteColor].CGColor;
// viewcell
UIView *roundView = [[UIView alloc] initWithFrame:bounds];
// roundView
[roundView.layer insertSublayer:layer atIndex:0];
roundView.backgroundColor = UIColor.clearColor;
// cellview
self.backgroundView = roundView;
}
@end

View File

@@ -0,0 +1,22 @@
//
// UITextView+Placeholder.h
// MoHuanXingYu
//
// Created by aa on 2019/7/12.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
FOUNDATION_EXPORT double UITextView_PlaceholderVersionNumber;
FOUNDATION_EXPORT const unsigned char UITextView_PlaceholderVersionString[];
@interface UITextView (Placeholder)
@property (nonatomic, readonly) UILabel *placeholderLabel;
@property (nonatomic, strong) IBInspectable NSString *placeholder;
@property (nonatomic, strong) NSAttributedString *attributedPlaceholder;
@property (nonatomic, strong) IBInspectable UIColor *placeholderColor;
+(UIColor *)defaultPlaceholderColor;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,192 @@
//
// UITextView+Placeholder.m
// MoHuanXingYu
//
// Created by aa on 2019/7/12.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "UITextView+Placeholder.h"
#import <objc/runtime.h>
@implementation UITextView (Placeholder)
+(void)load {
// is this the best solution?
method_exchangeImplementations(class_getInstanceMethod(self.class, NSSelectorFromString(@"dealloc")),
class_getInstanceMethod(self.class, @selector(swizzledDealloc)));
}
-(void)swizzledDealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
UILabel *label = objc_getAssociatedObject(self, @selector(placeholderLabel));
if (label) {
for (NSString *key in self.class.observingKeys) {
@try {
[self removeObserver:self forKeyPath:key];
}
@catch (NSException *exception) {
// Do nothing
}
}
}
[self swizzledDealloc];
}
#pragma mark - Class Methods
#pragma mark `defaultPlaceholderColor`
+ (UIColor *)defaultPlaceholderColor {
static UIColor *color = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
UITextField *textField = [[UITextField alloc] init];
textField.placeholder = @" ";
// color = [textField valueForKeyPath:@"_placeholderLabel.textColor"]; //01_06
color = HEXCOLORA(0xffffff, 0.7);
});
return color;
}
#pragma mark - `observingKeys`
+ (NSArray *)observingKeys {
return @[@"attributedText",
@"bounds",
@"font",
@"frame",
@"text",
@"textAlignment",
@"textContainerInset"];
}
#pragma mark - Properties
#pragma mark `placeholderLabel`
- (UILabel *)placeholderLabel {
UILabel *label = objc_getAssociatedObject(self, @selector(placeholderLabel));
if (!label) {
NSAttributedString *originalText = self.attributedText;
self.text = @" "; // lazily set font of `UITextView`.
self.attributedText = originalText;
label = [[UILabel alloc] init];
label.textColor = [self.class defaultPlaceholderColor];
label.numberOfLines = 0;
label.userInteractionEnabled = NO;
objc_setAssociatedObject(self, @selector(placeholderLabel), label, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
self.needsUpdateFont = YES;
[self updatePlaceholderLabel];
self.needsUpdateFont = NO;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updatePlaceholderLabel)
name:UITextViewTextDidChangeNotification
object:self];
for (NSString *key in self.class.observingKeys) {
[self addObserver:self forKeyPath:key options:NSKeyValueObservingOptionNew context:nil];
}
}
return label;
}
#pragma mark `placeholder`
- (NSString *)placeholder {
return self.placeholderLabel.text;
}
- (void)setPlaceholder:(NSString *)placeholder {
self.placeholderLabel.text = placeholder;
[self updatePlaceholderLabel];
}
- (NSAttributedString *)attributedPlaceholder {
return self.placeholderLabel.attributedText;
}
- (void)setAttributedPlaceholder:(NSAttributedString *)attributedPlaceholder {
self.placeholderLabel.attributedText = attributedPlaceholder;
[self updatePlaceholderLabel];
}
#pragma mark `placeholderColor`
- (UIColor *)placeholderColor {
return self.placeholderLabel.textColor;
}
- (void)setPlaceholderColor:(UIColor *)placeholderColor {
self.placeholderLabel.textColor = placeholderColor;
}
#pragma mark `needsUpdateFont`
- (BOOL)needsUpdateFont {
return [objc_getAssociatedObject(self, @selector(needsUpdateFont)) boolValue];
}
- (void)setNeedsUpdateFont:(BOOL)needsUpdate {
objc_setAssociatedObject(self, @selector(needsUpdateFont), @(needsUpdate), OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
#pragma mark - KVO
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if ([keyPath isEqualToString:@"font"]) {
self.needsUpdateFont = (change[NSKeyValueChangeNewKey] != nil);
}
[self updatePlaceholderLabel];
}
#pragma mark - Update
- (void)updatePlaceholderLabel {
if (self.text.length) {
[self.placeholderLabel removeFromSuperview];
return;
}
[self insertSubview:self.placeholderLabel atIndex:0];
if (self.needsUpdateFont) {
self.placeholderLabel.font = self.font;
self.needsUpdateFont = NO;
}
self.placeholderLabel.textAlignment = self.textAlignment;
// `NSTextContainer` is available since iOS 7
CGFloat lineFragmentPadding;
UIEdgeInsets textContainerInset;
#pragma deploymate push "ignored-api-availability"
// iOS 7+
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
lineFragmentPadding = self.textContainer.lineFragmentPadding;
textContainerInset = self.textContainerInset;
}
#pragma deploymate pop
// iOS 6
else {
lineFragmentPadding = 5;
textContainerInset = UIEdgeInsetsMake(8, 0, 8, 0);
}
CGFloat x = lineFragmentPadding + textContainerInset.left;
CGFloat y = textContainerInset.top;
CGFloat width = CGRectGetWidth(self.bounds) - x - lineFragmentPadding - textContainerInset.right;
CGFloat height = [self.placeholderLabel sizeThatFits:CGSizeMake(width, 0)].height;
self.placeholderLabel.frame = CGRectMake(x, y, width, height);
}
@end

View File

@@ -0,0 +1,16 @@
//
// UIView+Border.h
// ddemtion
//
// Created by yunfenghan Ling on 16/3/18.
// Copyright © 2016年 lingyfh. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (Border)
@property (nonatomic, assign) IBInspectable CGFloat borderWidth;
@property (nonatomic, assign) IBInspectable UIColor *borderColor;
@end

View File

@@ -0,0 +1,29 @@
//
// UIView+Border.m
// ddemtion
//
// Created by yunfenghan Ling on 16/3/18.
// Copyright © 2016 lingyfh. All rights reserved.
//
#import "UIView+Border.h"
@implementation UIView (Border)
- (void)setBorderWidth:(CGFloat)borderWidth {
self.layer.borderWidth = borderWidth;
}
- (CGFloat)borderWidth {
return self.layer.borderWidth;
}
- (void)setBorderColor:(UIColor *)borderColor {
self.layer.borderColor = borderColor.CGColor;
}
- (UIColor *)borderColor {
return [UIColor colorWithCGColor:self.layer.borderColor];
}
@end

View File

@@ -0,0 +1,15 @@
//
// UIView+CornerRadius.h
// ddemtion
//
// Created by LingYunfenghan on 3/17/16.
// Copyright © 2016 lingyfh. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (CornerRadius)
@property (nonatomic, assign) IBInspectable CGFloat cornerRadius;
@end

View File

@@ -0,0 +1,21 @@
//
// UIView+CornerRadius.m
// ddemtion
//
// Created by LingYunfenghan on 3/17/16.
// Copyright © 2016 lingyfh. All rights reserved.
//
#import "UIView+CornerRadius.h"
@implementation UIView (CornerRadius)
- (void)setCornerRadius:(CGFloat)cornerRadius {
self.layer.cornerRadius = cornerRadius;
}
- (CGFloat)cornerRadius {
return self.layer.cornerRadius;
}
@end

View File

@@ -0,0 +1,14 @@
//
// UIView+GDRotate.h
// GDCategory
//
// Created by yunfenghan Ling on 2017/11/10.
//
#import <UIKit/UIKit.h>
@interface UIView (GDRotate)
@property (nonatomic, assign) IBInspectable CGFloat rotateDegree;
@end

View File

@@ -0,0 +1,20 @@
//
// UIView+GDRotate.m
// GDCategory
//
// Created by yunfenghan Ling on 2017/11/10.
//
#import "UIView+GDRotate.h"
@implementation UIView (GDRotate)
- (void)setRotateDegree:(CGFloat)rotateDegree {
self.transform = CGAffineTransformMakeRotation((rotateDegree * M_PI) / 180.0f);
}
- (CGFloat)rotateDegree {
return self.rotateDegree;
}
@end

View File

@@ -0,0 +1,16 @@
//
// UIView+TapBlock.h
// self
//
// Created by eee on 2017/10/20.
// Copyright © 2017年 eeee. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIView (TapBlock)
- (void)dg_Tapped:(void(^)(void))tappBlock;
@end

View File

@@ -0,0 +1,46 @@
//
// UIView+TapBlock.m
// self
//
// Created by eeee on 2017/10/20.
// Copyright © 2017 eeee. All rights reserved.
//
#import "UIView+TapBlock.h"
#import <objc/runtime.h>
typedef void(^TapBlock)(void); //
@interface UIView ()
@property (nonatomic,copy) TapBlock TapBlock; //
@end
@implementation UIView (TapBlock)
//static char KUIViewPropertyTap = "KUIViewPropertyTap";
static void *KUIViewPropertyTap = &KUIViewPropertyTap;
- (void)setTapBlock:(TapBlock)TapBlock{
objc_setAssociatedObject(self, &KUIViewPropertyTap, TapBlock, OBJC_ASSOCIATION_COPY);
}
-(TapBlock)TapBlock{
return objc_getAssociatedObject(self, &KUIViewPropertyTap);
}
- (void)dg_Tapped:(void(^)(void))tappBlock{
self.TapBlock = tappBlock;
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped)];
[self addGestureRecognizer:tapGesture];
}
// view
- (void)viewTapped {
self.TapBlock?self.TapBlock():nil;
}
@end

View File

@@ -0,0 +1,232 @@
//
// SPAlertController.h
// SPAlertController
//
// Created by 乐升平 on 18/10/12. https://github.com/SPStore/SPAlertController
// Copyright © 2018年 iDress. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, SPAlertControllerStyle) {
SPAlertControllerStyleActionSheet = 0, // 从四周的某一侧弹出(顶/左/底/右),从哪边弹出,就往哪边对齐
SPAlertControllerStyleAlert, // 从中间弹出
};
typedef NS_ENUM(NSInteger, SPAlertAnimationType) {
SPAlertAnimationTypeDefault = 0, // 默认动画如果是SPAlertControllerStyleActionSheet样式,默认动画等效于SPAlertAnimationTypeFromBottom如果是SPAlertControllerStyleAlert样式,默认动画等效于SPAlertAnimationTypeShrink
SPAlertAnimationTypeFromBottom, // 从底部弹出
SPAlertAnimationTypeFromTop, // 从顶部弹出
SPAlertAnimationTypeFromRight, // 从右边弹出
SPAlertAnimationTypeFromLeft, // 从左边弹出
SPAlertAnimationTypeShrink, // 收缩动画
SPAlertAnimationTypeExpand, // 发散动画
SPAlertAnimationTypeFade, // 渐变动画
SPAlertAnimationTypeNone, // 无动画
SPAlertAnimationTypeAlpha NS_ENUM_DEPRECATED_IOS(8_0, 8_0, "Use SPAlertAnimationTypeFad instead"), // 渐变动画
SPAlertAnimationTypeRaiseUp NS_ENUM_DEPRECATED_IOS(8_0, 8_0, "Use SPAlertAnimationTypeFromBottom instead"), // 从底部弹出
SPAlertAnimationTypeDropDown NS_ENUM_DEPRECATED_IOS(8_0, 8_0, "Use SPAlertAnimationTypeFromTop instead"), // 从顶部弹出
};
typedef NS_ENUM(NSInteger, SPAlertActionStyle) {
SPAlertActionStyleDefault = 0, // 默认样式
SPAlertActionStyleCancel, // 取消样式,字体加粗
SPAlertActionStyleDestructive // 红色字体样式
};
typedef NS_ENUM(NSInteger, SPBackgroundViewAppearanceStyle) {
SPBackgroundViewAppearanceStyleTranslucent = 0, // 无毛玻璃效果,黑色透明(默认是0.5透明)
SPBackgroundViewAppearanceStyleBlurDark,
SPBackgroundViewAppearanceStyleBlurExtraLight,
SPBackgroundViewAppearanceStyleBlurLight,
};
// ===================================================== SPAlertAction =====================================================
@interface SPAlertAction : NSObject <NSCopying>
/**
* 创建一个action
*
* @param title 标题
* @param style action样式
* @param handler 点击后的bolok回调
*/
+ (instancetype)actionWithTitle:(nullable NSString *)title style:(SPAlertActionStyle)style handler:(void (^ __nullable)(SPAlertAction *action))handler;
/** action的标题 */
@property(nullable, nonatomic, copy) NSString *title;
/** action的富文本标题 */
@property(nullable, nonatomic, copy) NSAttributedString *attributedTitle;
/** action的图标位于title的左边 */
@property(nullable, nonatomic, copy) UIImage *image;
/** title跟image之间的间距 */
@property (nonatomic, assign) CGFloat imageTitleSpacing;
/** 样式 */
@property(nonatomic, readonly) SPAlertActionStyle style;
/** 是否能点击,默认为YES */
@property(nonatomic, getter=isEnabled) BOOL enabled;
/** action的标题颜色,这个颜色只是普通文本的颜色富文本颜色需要用NSForegroundColorAttributeName */
@property(nonatomic, strong) UIColor *titleColor;
/** action的标题字体,如果文字太长显示不全会自动改变字体自适应按钮宽度最多压缩文字为原来的0.5倍封顶 */
@property(nonatomic, strong) UIFont *titleFont;
/** action的标题的内边距如果在不改变字体的情况下想增大action的高度可以设置该属性的top和bottom值,默认UIEdgeInsetsMake(0, 15, 0, 15) */
@property(nonatomic, assign) UIEdgeInsets titleEdgeInsets;
@end
// ===================================================== SPAlertController =====================================================
@protocol SPAlertControllerDelegate;
@interface SPAlertController : UIViewController
+ (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle;
+ (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType; // animationType传SPAlertAnimationTypeDefault则跟第一个类方法等效
- (void)addAction:(SPAlertAction *)action;
@property (nonatomic, readonly) NSArray<SPAlertAction *> *actions;
/* 添加文本输入框
* 一旦添加后就会回调一次(仅回调一次,因此可以在这个block块里面自由定制textFiled,如设置textField的属性,设置代理,添加addTarget,监听通知等);
*/
- (void)addTextFieldWithConfigurationHandler:(void (^ __nullable)(UITextField *textField))configurationHandler;
@property(nullable, nonatomic, readonly) NSArray<UITextField *> *textFields;
/** 主标题 */
@property(nullable, nonatomic, copy) NSString *title;
/** 副标题 */
@property(nullable, nonatomic, copy) NSString *message;
/** 主标题(富文本) */
@property(nullable, nonatomic, copy) NSAttributedString *attributedTitle;
/** 副标题(富文本) */
@property(nullable, nonatomic, copy) NSAttributedString *attributedMessage;
/** 头部图标位置处于title之上,大小取决于图片本身大小 */
@property(nullable,nonatomic, copy) UIImage *image;
/** 主标题颜色 */
@property(nonatomic, strong) UIColor *titleColor;
/** 主标题字体,默认18,加粗 */
@property(nonatomic, strong) UIFont *titleFont;
/** 副标题颜色 */
@property(nonatomic, strong) UIColor *messageColor;
/** 副标题字体,默认16,未加粗 */
@property(nonatomic, strong) UIFont *messageFont;
/** 对齐方式(包括主标题和副标题) */
@property(nonatomic, assign) NSTextAlignment textAlignment;
/** 对齐方式(副标题),只针对副标题,用于更新的情况下 */
@property(nonatomic, assign) NSTextAlignment textTitleAlignment;
/** 头部图标的限制大小,默认无穷大 */
@property (nonatomic, assign) CGSize imageLimitSize;
/*
* action水平排列还是垂直排列
* actionSheet样式下:默认为UILayoutConstraintAxisVertical(垂直排列), 如果设置为UILayoutConstraintAxisHorizontal(水平排列)则除去取消样式action之外的其余action将水平排列
* alert样式下:当actions的个数大于2或者某个action的title显示不全时为UILayoutConstraintAxisVertical(垂直排列)否则默认为UILayoutConstraintAxisHorizontal(水平排列)此样式下设置该属性可以修改所有action的排列方式
* 不论哪种样式,只要外界设置了该属性,永远以外界设置的优先
*/
@property(nonatomic) UILayoutConstraintAxis actionAxis;
/* 距离屏幕边缘的最小间距
* alert样式下该属性是指对话框四边与屏幕边缘之间的距离此样式下默认值随设备变化actionSheet样式下是指弹出边的对立边与屏幕之间的距离比如如果从右边弹出那么该属性指的就是对话框左边与屏幕之间的距离此样式下默认值为70
*/
@property(nonatomic, assign) CGFloat minDistanceToEdges;
/** 圆角半径只有alert样式有效*/
@property(nonatomic, assign) CGFloat cornerRadiusForAlert;
/** 对话框的偏移量y值为正向下偏移为负向上偏移x值为正向右偏移为负向左偏移该属性只对SPAlertControllerStyleAlert样式有效,键盘的frame改变会自动偏移如果外界手动设置偏移只会取手动设置的 */
@property(nonatomic, assign) CGPoint offsetForAlert;
/** 设置alert样式下的偏移量,动画为NO则跟属性offsetForAlert等效 */
- (void)setOffsetForAlert:(CGPoint)offsetForAlert animated:(BOOL)animated;
/** 是否需要对话框拥有毛玻璃,默认为YES----Dialog单词是对话框的意思 */
@property(nonatomic, assign) BOOL needDialogBlur;
/** 是否单击背景退出对话框,默认为YES */
@property(nonatomic, assign) BOOL tapBackgroundViewDismiss;
@property(nonatomic, weak) id<SPAlertControllerDelegate> delegate;
@property(nonatomic, readonly) SPAlertControllerStyle preferredStyle;
@property(nonatomic, readonly) SPAlertAnimationType animationType;
/** 设置action与下一个action之间的间距, action仅限于非取消样式必须在'-addAction:'之后设置iOS11或iOS11以上才能使用 */
- (void)setCustomSpacing:(CGFloat)spacing afterAction:(SPAlertAction *)action API_AVAILABLE(ios(11.0));
- (CGFloat)customSpacingAfterAction:(SPAlertAction *)action API_AVAILABLE(ios(11.0));
/** 设置蒙层的外观样式,可通过alpha调整透明度 */
- (void)setBackgroundViewAppearanceStyle:(SPBackgroundViewAppearanceStyle)style alpha:(CGFloat)alpha;
// 插入一个组件view位置处于头部和action部分之间要求头部和action部分同时存在
- (void)insertComponentView:(nullable UIView *)componentView;
// ---------------------------------------------- custom -----------------------------------------------------
/**
创建控制器(自定义整个对话框)
@param customAlertView 整个对话框的自定义view
@param preferredStyle 对话框样式
@param animationType 动画类型
@return 控制器对象
*/
+ (instancetype)alertControllerWithCustomAlertView:(nullable UIView *)customAlertView preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType;
/**
创建控制器(自定义对话框的头部)
@param customHeaderView 头部自定义view
@param preferredStyle 对话框样式
@param animationType 动画类型
@return 控制器对象
*/
+ (instancetype)alertControllerWithCustomHeaderView:(nullable UIView *)customHeaderView preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType;
/**
创建控制器(自定义对话框的action部分)
@param customActionSequenceView action部分的自定义view
@param title 大标题
@param message 副标题
@param preferredStyle 对话框样式
@param animationType 动画类型
@return 控制器对象
*/
+ (instancetype)alertControllerWithCustomActionSequenceView:(nullable UIView *)customActionSequenceView title:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType;
/** 更新自定义view的size自定义了哪个view该size指的就是哪个view的size,比如屏幕旋转自定义view的大小发生了改变可通过该方法更新 */
- (void)updateCustomViewSize:(CGSize)size;
@property (nonatomic, assign) CGFloat maxTopMarginForActionSheet NS_DEPRECATED_IOS(8_0, 8_0,"Use minDistanceToEdgeForAlert instead"); // actionSheet样式下,最大的顶部间距,从底部、右边、左边弹出时默认为0,iPhoneX及以上机型默认44,从顶部弹出时无论哪种机型都默认为0;注意该属性中的top单词不是精确的指顶部当从右边弹出时top指的就是左从左边弹出时top指的就是右从顶部弹出时top指的就是底
@property(nonatomic, assign) CGFloat maxMarginForAlert NS_DEPRECATED_IOS(8_0, 8_0,"Use minDistanceToEdgeForAlert instead");// alert样式下,四周的最小间距,默认为20该属性起名有误应该是最小而不是最大3.0版本属性名已改叫minDistanceToEdgeForAlert
@property(nonatomic, assign) NSInteger maxNumberOfActionHorizontalArrangementForAlert NS_DEPRECATED_IOS(8_0, 8_0,"Use actionAxis instead");// alert样式下,水平排列的最大个数,如果大于了这个数,则所有action将垂直排列,默认是2在添加action之前设置性能会更佳,由于水平排列的action都是排布在footerView上,所以如果自定义了footerView该属性将失去效用
@property(nonatomic, assign) CGFloat offsetYForAlert NS_DEPRECATED_IOS(8_0, 8_0,"Use offset instead"); // 对话框垂直方向上的偏移
+ (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType customView:(nullable UIView *)customView NS_DEPRECATED_IOS(8_0, 8_0,"Use +alertControllerWithCustomView:preferredStyle:animationType:");
+ (instancetype)alertControllerWithPreferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType customHeaderView:(nullable UIView *)customHeaderView NS_DEPRECATED_IOS(8_0, 8_0,"Use +alertControllerWithCustomHeaderView:preferredStyle:animationType:");
+ (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType customCenterView:(nullable UIView *)customCenterView NS_DEPRECATED_IOS(8_0, 8_0,"Use +alertControllerWithComponentView:title:message:(nullable NSString *)message preferredStyle:animationType:");
+ (instancetype)alertControllerWithTitle:(nullable NSString *)title message:(nullable NSString *)message preferredStyle:(SPAlertControllerStyle)preferredStyle animationType:(SPAlertAnimationType)animationType customFooterView:(nullable UIView *)customFooterView NS_DEPRECATED_IOS(8_0, 8_0,"Use +alertControllerWithCustomActionGroupView:title:message: preferredStyle:animationType:");
@end
@protocol SPAlertControllerDelegate <NSObject>
@optional;
- (void)willPresentAlertController:(SPAlertController *)alertController; // 将要present
- (void)didPresentAlertController:(SPAlertController *)alertController; // 已经present
- (void)willDismissAlertController:(SPAlertController *)alertController; // 将要dismiss
- (void)didDismissAlertController:(SPAlertController *)alertController; // 已经dismiss
- (void)sp_alertControllerWillShow:(SPAlertController *)alertController NS_DEPRECATED_IOS(8_0, 8_0,"Use -willPresentAlertController:");
- (void)sp_alertControllerDidShow:(SPAlertController *)alertController NS_DEPRECATED_IOS(8_0, 8_0,"Use -DidPresentAlertController:");
- (void)sp_alertControllerWillHide:(SPAlertController *)alertController NS_DEPRECATED_IOS(8_0, 8_0,"Use -willDismissAlertController:");
- (void)sp_alertControllerDidHide:(SPAlertController *)alertController NS_DEPRECATED_IOS(8_0, 8_0,"Use -DidDismissAlertController:");
@end
@interface SPAlertPresentationController : UIPresentationController
@end
@interface SPAlertAnimation : NSObject <UIViewControllerAnimatedTransitioning>
+ (instancetype)animationIsPresenting:(BOOL)presenting;
@end
NS_ASSUME_NONNULL_END

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,95 @@
//
// UIViewController+AlertViewAndActionSheet.h
// MiAiApp
//
// Created by 徐阳 on 2017/6/1.
// Copyright © 2017年 徐阳. All rights reserved.
//
#import <UIKit/UIKit.h>
#define NO_USE -1000
typedef void(^click)(NSInteger index);
typedef void(^configuration)(UITextField *field, NSInteger index);
typedef void(^clickHaveField)(NSArray<UITextField *> *fields, NSInteger index);
@interface UIViewController (AlertViewAndActionSheet)
#ifdef kiOS8Later
#else
<
UIAlertViewDelegate,
UIActionSheetDelegate
>
#endif
/*!
* use alert messageLabelAlignmentLeft
*
* @param title title
* @param message message
* @param others other button title
* @param animated animated
* @param click button action
*/
- (void)AlertWithTitle:(NSString *)title
messageAlignmentLeft:(NSString *)message
andOthers:(NSArray<NSString *> *)others
animated:(BOOL)animated
action:(click)click;
/*!
* use alert
*
* @param title title
* @param message message
* @param others other button title
* @param animated animated
* @param click button action
*/
- (void)AlertWithTitle:(NSString *)title
message:(NSString *)message
andOthers:(NSArray<NSString *> *)others
animated:(BOOL)animated
action:(click)click;
/*!
* use action sheet
*
* @param title title
* @param message message just system verson max or equal 8.0.
* @param destructive button title is red color
* @param destructiveAction destructive action
* @param others other button
* @param animated animated
* @param click other button action
*/
- (void)ActionSheetWithTitle:(NSString *)title
message:(NSString *)message
destructive:(NSString *)destructive
destructiveAction:(click )destructiveAction
andOthers:(NSArray <NSString *> *)others
animated:(BOOL )animated
action:(click )click;
/*!
* use alert include textField
*
* @param title title
* @param message message
* @param buttons buttons
* @param number number of textField
* @param configuration configuration textField property
* @param animated animated
* @param click button action
*/
- (void)AlertWithTitle:(NSString *)title
message:(NSString *)message
buttons:(NSArray<NSString *> *)buttons
textFieldNumber:(NSInteger )number
configuration:(configuration )configuration
animated:(BOOL )animated
action:(clickHaveField )click;
@end

View File

@@ -0,0 +1,195 @@
//
// UIViewController+AlertViewAndActionSheet.m
// MiAiApp
//
// Created by on 2017/6/1.
// Copyright © 2017 . All rights reserved.
//
#import "UIViewController+AlertViewAndActionSheet.h"
#import "SPAlertController.h"
static NSMutableArray *fields = nil;
@implementation UIViewController (AlertViewAndActionSheet)
- (void)AlertWithTitle:(NSString *)title
messageAlignmentLeft:(NSString *)message
andOthers:(NSArray<NSString *> *)others
animated:(BOOL)animated
action:(click)click
{
SPAlertController *alertController = [SPAlertController alertControllerWithTitle:title message:message preferredStyle:SPAlertControllerStyleAlert];
alertController.textAlignment = NSTextAlignmentCenter;
alertController.textTitleAlignment = NSTextAlignmentCenter;
UIView *subView1 = alertController.view.subviews[0];
UIView *subView2 = subView1.subviews[0];
UIView *subView3 = subView2.subviews[0];
UIView *subView4 = subView3.subviews[0];
UIView *subView5 = subView4.subviews[0];
//title message
// UILabel *titleLabel = subView5.subviews[0];
if (message.length>0) {
UILabel *msgeLabel = subView5.subviews[1];
msgeLabel.textAlignment = NSTextAlignmentLeft;
}
[others enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (idx == 0)
{
[alertController addAction:[SPAlertAction actionWithTitle:obj style:SPAlertActionStyleCancel handler:^(SPAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
else
{
[alertController addAction:[SPAlertAction actionWithTitle:obj style:SPAlertActionStyleDestructive handler:^(SPAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
}];
[self presentViewController:alertController animated:YES completion:nil];
}
#pragma mark - ***** alert view
- (void)AlertWithTitle:(NSString *)title
message:(NSString *)message
andOthers:(NSArray<NSString *> *)others
animated:(BOOL)animated
action:(click)click
{
SPAlertController *alertController = [SPAlertController alertControllerWithTitle:title message:message preferredStyle:SPAlertControllerStyleAlert];
alertController.textAlignment = NSTextAlignmentCenter;
alertController.textTitleAlignment = NSTextAlignmentCenter;
[others enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (idx == 0)
{
[alertController addAction:[SPAlertAction actionWithTitle:obj style:SPAlertActionStyleCancel handler:^(SPAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
else {
[alertController addAction:[SPAlertAction actionWithTitle:obj style:SPAlertActionStyleDefault handler:^(SPAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
}];
[self presentViewController:alertController animated:YES completion:nil];
}
#pragma mark - ***** sheet
- (void)ActionSheetWithTitle:(NSString *)title
message:(NSString *)message
destructive:(NSString *)destructive
destructiveAction:(click )destructiveAction
andOthers:(NSArray <NSString *> *)others
animated:(BOOL )animated
action:(click )click
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet];
if (destructive)
{
[alertController addAction:[UIAlertAction actionWithTitle:destructive style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
if (action){
destructiveAction(NO_USE);
}
}]];
}
[others enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (idx == 0)
{
[alertController addAction:[UIAlertAction actionWithTitle:obj style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
else
{
[alertController addAction:[UIAlertAction actionWithTitle:obj style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if (action && click)
{
click(idx);
}
}]];
}
}];
[self presentViewController:alertController animated:animated completion:nil];
}
#pragma mark - ***** textField
- (void)AlertWithTitle:(NSString *)title
message:(NSString *)message
buttons:(NSArray<NSString *> *)buttons
textFieldNumber:(NSInteger )number
configuration:(configuration )configuration
animated:(BOOL )animated
action:(clickHaveField )click
{
if (fields == nil)
{
fields = [NSMutableArray array];
}
else
{
[fields removeAllObjects];
}
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert];
// textfield
for (NSInteger i = 0; i < number; i++)
{
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
[fields addObject:textField];
configuration(textField,i);
}];
}
// button
[buttons enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (idx == 0)
{
[alertController addAction:[UIAlertAction actionWithTitle:obj style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
if (action && click)
{
click(fields,idx);
}
}]];
}
else
{
[alertController addAction:[UIAlertAction actionWithTitle:obj style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
if (action && click)
{
click(fields,idx);
}
}]];
}
}];
[self presentViewController:alertController animated:animated completion:nil];
}
@end

View File

@@ -0,0 +1,15 @@
//
// UIViewController+Utils.h
// LightWallPaper
//
// Created by yuebin on 17/2/11.
// Copyright © 2017年 adesk. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIViewController (CurViewController)
+ (UIViewController *)currentViewController;
@end

View File

@@ -0,0 +1,64 @@
//
// UIViewController+Utils.m
// LightWallPaper
//
// Created by yuebin on 17/2/11.
// Copyright © 2017 adesk. All rights reserved.
//
#import "UIViewController+CurViewController.h"
@implementation UIViewController (CurViewController)
+ (UIViewController*) currentViewController {
// Find best view controller
UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController;
return [UIViewController findBestViewController:viewController];
}
#pragma mark -
+ (UIViewController *) findBestViewController:(UIViewController*)vc {
if (vc.presentedViewController) {
// Return presented view controller
return [UIViewController findBestViewController:vc.presentedViewController];
} else if ([vc isKindOfClass:[UISplitViewController class]]) {
// Return right hand side
UISplitViewController* svc = (UISplitViewController*) vc;
if (svc.viewControllers.count > 0)
return [UIViewController findBestViewController:svc.viewControllers.lastObject];
else
return vc;
} else if ([vc isKindOfClass:[UINavigationController class]]) {
// Return top view
UINavigationController* svc = (UINavigationController*) vc;
if (svc.viewControllers.count > 0)
return [UIViewController findBestViewController:svc.topViewController];
else
return vc;
} else if ([vc isKindOfClass:[UITabBarController class]]) {
// Return visible view
UITabBarController* svc = (UITabBarController*) vc;
if (svc.viewControllers.count > 0)
return [UIViewController findBestViewController:svc.selectedViewController];
else
return vc;
} else {
// Unknown view controller type, return last child view controller
return vc;
}
}
@end

View File

@@ -0,0 +1,34 @@
//
// ViewFrameGeometry.h
// 君分时代
//
// Created by 贠小飞 on 2018/4/10.
// Copyright © 2018年 贠小飞. All rights reserved.
//
#import <UIKit/UIKit.h>
CGPoint CGRectGetCenter(CGRect rect);
CGRect CGRectMoveToCenter(CGRect rect, CGPoint center);
@interface UIView (ViewFrameGeometry)
@property CGPoint origin;
@property CGSize size;
@property (readonly) CGPoint bottomLeft;
@property (readonly) CGPoint bottomRight;
@property (readonly) CGPoint topRight;
@property CGFloat height;
@property CGFloat width;
@property CGFloat top;
@property CGFloat left;
@property CGFloat bottom;
@property CGFloat right;
- (void) moveBy: (CGPoint) delta;
- (void) scaleBy: (CGFloat) scaleFactor;
- (void) fitInSize: (CGSize) aSize;
@end

View File

@@ -0,0 +1,194 @@
//
// ViewFrameGeometry.m
//
//
// Created by on 2018/4/10.
// Copyright © 2018 . All rights reserved.
//
#import "ViewFrameGeometry.h"
CGPoint CGRectGetCenter(CGRect rect)
{
CGPoint pt;
pt.x = CGRectGetMidX(rect);
pt.y = CGRectGetMidY(rect);
return pt;
}
CGRect CGRectMoveToCenter(CGRect rect, CGPoint center)
{
CGRect newrect = CGRectZero;
newrect.origin.x = center.x-CGRectGetMidX(rect);
newrect.origin.y = center.y-CGRectGetMidY(rect);
newrect.size = rect.size;
return newrect;
}
@implementation UIView (ViewGeometry)
// Retrieve and set the origin
- (CGPoint) origin
{
return self.frame.origin;
}
- (void) setOrigin: (CGPoint) aPoint
{
CGRect newframe = self.frame;
newframe.origin = aPoint;
self.frame = newframe;
}
// Retrieve and set the size
- (CGSize) size
{
return self.frame.size;
}
- (void) setSize: (CGSize) aSize
{
CGRect newframe = self.frame;
newframe.size = aSize;
self.frame = newframe;
}
// Query other frame locations
- (CGPoint) bottomRight
{
CGFloat x = self.frame.origin.x + self.frame.size.width;
CGFloat y = self.frame.origin.y + self.frame.size.height;
return CGPointMake(x, y);
}
- (CGPoint) bottomLeft
{
CGFloat x = self.frame.origin.x;
CGFloat y = self.frame.origin.y + self.frame.size.height;
return CGPointMake(x, y);
}
- (CGPoint) topRight
{
CGFloat x = self.frame.origin.x + self.frame.size.width;
CGFloat y = self.frame.origin.y;
return CGPointMake(x, y);
}
// Retrieve and set height, width, top, bottom, left, right
- (CGFloat) height
{
return self.frame.size.height;
}
- (void) setHeight: (CGFloat) newheight
{
CGRect newframe = self.frame;
newframe.size.height = newheight;
self.frame = newframe;
}
- (CGFloat) width
{
return self.frame.size.width;
}
- (void) setWidth: (CGFloat) newwidth
{
CGRect newframe = self.frame;
newframe.size.width = newwidth;
self.frame = newframe;
}
- (CGFloat) top
{
return self.frame.origin.y;
}
- (void) setTop: (CGFloat) newtop
{
CGRect newframe = self.frame;
newframe.origin.y = newtop;
self.frame = newframe;
}
- (CGFloat) left
{
return self.frame.origin.x;
}
- (void) setLeft: (CGFloat) newleft
{
CGRect newframe = self.frame;
newframe.origin.x = newleft;
self.frame = newframe;
}
- (CGFloat) bottom
{
return self.frame.origin.y + self.frame.size.height;
}
- (void) setBottom: (CGFloat) newbottom
{
CGRect newframe = self.frame;
newframe.origin.y = newbottom - self.frame.size.height;
self.frame = newframe;
}
- (CGFloat) right
{
return self.frame.origin.x + self.frame.size.width;
}
- (void) setRight: (CGFloat) newright
{
CGFloat delta = newright - (self.frame.origin.x + self.frame.size.width);
CGRect newframe = self.frame;
newframe.origin.x += delta ;
self.frame = newframe;
}
// Move via offset
- (void) moveBy: (CGPoint) delta
{
CGPoint newcenter = self.center;
newcenter.x += delta.x;
newcenter.y += delta.y;
self.center = newcenter;
}
// Scaling
- (void) scaleBy: (CGFloat) scaleFactor
{
CGRect newframe = self.frame;
newframe.size.width *= scaleFactor;
newframe.size.height *= scaleFactor;
self.frame = newframe;
}
// Ensure that both dimensions fit within the given size by scaling down
- (void) fitInSize: (CGSize) aSize
{
CGFloat scale;
CGRect newframe = self.frame;
if (newframe.size.height && (newframe.size.height > aSize.height))
{
scale = aSize.height / newframe.size.height;
newframe.size.width *= scale;
newframe.size.height *= scale;
}
if (newframe.size.width && (newframe.size.width >= aSize.width))
{
scale = aSize.width / newframe.size.width;
newframe.size.width *= scale;
newframe.size.height *= scale;
}
self.frame = newframe;
}
@end

View File

@@ -0,0 +1,53 @@
//
// ZJUIUtil.h
// ZJW_Course
//
// Created by imac on 2018/5/4.
// Copyright © 2018年 wangmeng. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Global.h"
@interface ZJUIUtil : NSObject
//设置下拉刷新
+ (void) refreshWithHeader:(UIScrollView *) tableView
refresh:(dispatch_block_t)refresh;
// 设置下拉刷新 并设置背景颜色
+ (void) refreshWithHeader:(UITableView *) tableView
backgroudColor:(UIColor *)color
refresh:(dispatch_block_t)refresh;
// 设置白色箭头下拉刷新
+ (void)refreshWithWhiteHeader:(UITableView *) tableView
refresh:(dispatch_block_t) refresh;
// 设置上拉刷新(白色)
+ (void)refreshWithWhiteFooter:(UITableView *) tableView
refresh:(dispatch_block_t) refresh;
// 设置下拉加载更多
+ (void)loadWithHeader:(UITableView *) tableView
refresh:(dispatch_block_t) refresh;
// 设置上拉刷新
+ (void) refreshWithFooter:(UITableView *) tableView
refresh:(dispatch_block_t) refresh;
+ (UIColor *) colorWithHexString:(NSString *) hex;
// 16进制颜色
+ (UIColor *) colorWithHex:(long) hexColor;
+ (UIColor *) colorWithHex:(long) hexColor alpha:(CGFloat)alpha;
+ (UIImage *) imageWithColor:(UIColor *)color;
+ (UIImage *) imageWithColor:(UIColor *)color
size:(CGSize)size;
// 设置导航栏左侧按钮偏移
+ (void) leftNavItem:(UIViewController *)current
button:(UIButton *)button
offsetX:(CGFloat)offsetX;
/** 根据字体计以及最大宽度计算控件高度*/
+ (CGSize)sizeWith:(NSString *) text
font:(UIFont *) fontSize
width:(NSInteger) width;
+ (NSMutableAttributedString *)setHtmlStr:(NSString *)html isAnalyze:(BOOL)isAnalyze;
@end

View File

@@ -0,0 +1,294 @@
//
// ZJUIUtil.m
// ZJW_Course
//
// Created by imac on 2018/5/4.
// Copyright © 2018 wangmeng. All rights reserved.
//
#import "ZJUIUtil.h"
@implementation ZJUIUtil
//
+ (void)refreshWithHeader:(UIScrollView *) tableView
backgroudColor:(UIColor *)color
refresh:(dispatch_block_t)refresh
{
MJRefreshNormalHeader *header=[MJRefreshNormalHeader headerWithRefreshingBlock:^{
refresh();
}];
//
[header setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
[header setTitle:@"松开后刷新" forState:MJRefreshStatePulling];
[header setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
//
header.stateLabel.font = [UIFont systemFontOfSize:14];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];
//
header.stateLabel.textColor = [UIColor grayColor];
header.lastUpdatedTimeLabel.textColor = [UIColor grayColor];
header.backgroundColor = color;
header.scrollView.backgroundColor = color;
//
[header arrowView].image=[UIImage imageNamed:@"refresh_arrow"];
tableView.mj_header=header;
// ()
tableView.mj_header.automaticallyChangeAlpha = YES;
}
//
+ (void)refreshWithHeader:(UIScrollView *) tableView
refresh:(dispatch_block_t) refresh
{
MJRefreshNormalHeader *header=[MJRefreshNormalHeader headerWithRefreshingBlock:^{
refresh();
}];
//
[header setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
[header setTitle:@"松开后刷新" forState:MJRefreshStatePulling];
[header setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
//
header.stateLabel.font = [UIFont systemFontOfSize:14];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];
//
header.stateLabel.textColor = [UIColor grayColor];
header.lastUpdatedTimeLabel.textColor = [UIColor grayColor];
//
[header arrowView].image=[UIImage imageNamed:@"refresh_arrow"];
tableView.mj_header=header;
// ()
tableView.mj_header.automaticallyChangeAlpha = YES;
}
//
+ (void)refreshWithWhiteHeader:(UIScrollView *) tableView
refresh:(dispatch_block_t) refresh
{
MJRefreshNormalHeader *header=[MJRefreshNormalHeader headerWithRefreshingBlock:^{
refresh();
}];
//
[header setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
[header setTitle:@"松开后刷新" forState:MJRefreshStatePulling];
[header setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
//
header.stateLabel.font = [UIFont systemFontOfSize:14];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];
//
header.stateLabel.textColor = [UIColor whiteColor];
header.lastUpdatedTimeLabel.textColor = [UIColor whiteColor];
//
[header arrowView].image=[UIImage imageNamed:@"refresh_arrow_white"];
tableView.mj_header=header;
//
header.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
// ()
tableView.mj_header.automaticallyChangeAlpha = YES;
}
//
+ (void)loadWithHeader:(UITableView *) tableView
refresh:(dispatch_block_t) refresh
{
MJRefreshNormalHeader *header=[MJRefreshNormalHeader headerWithRefreshingBlock:^{
refresh();
}];
//
[header setTitle:@"下拉可以加载" forState:MJRefreshStateIdle];
[header setTitle:@"松开后加载" forState:MJRefreshStatePulling];
[header setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
//
header.stateLabel.font = [UIFont systemFontOfSize:14];
header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:12];
//
header.stateLabel.textColor = [UIColor grayColor];
header.lastUpdatedTimeLabel.textColor = [UIColor grayColor];
//
[header arrowView].image=[UIImage imageNamed:@"refresh_arrow"];
tableView.mj_header=header;
// ()
tableView.mj_header.automaticallyChangeAlpha = YES;
}
//
+ (void)refreshWithFooter:(UITableView *) tableView
refresh:(dispatch_block_t) refresh
{
MJRefreshBackNormalFooter *footer=[MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
refresh();
}];
//
[footer setTitle:@"上拉加载更多" forState:MJRefreshStateIdle];
[footer setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
[footer setTitle:@"我是有底线的" forState:MJRefreshStateNoMoreData];
//
footer.stateLabel.font = [UIFont systemFontOfSize:14];
//
footer.stateLabel.textColor = [UIColor grayColor];
//
[footer arrowView].image=[UIImage imageNamed:@"refresh_arrow"];
tableView.mj_footer=footer;
tableView.mj_footer.automaticallyChangeAlpha = YES;
}
// ()
+ (void)refreshWithWhiteFooter:(UITableView *) tableView
refresh:(dispatch_block_t) refresh
{
MJRefreshBackNormalFooter *footer=[MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
refresh();
}];
//
[footer setTitle:@"上拉加载更多" forState:MJRefreshStateIdle];
[footer setTitle:@"正在加载..." forState:MJRefreshStateRefreshing];
[footer setTitle:@"已加载完全部数据" forState:MJRefreshStateNoMoreData];
//
footer.stateLabel.font = [UIFont systemFontOfSize:14];
//
footer.stateLabel.textColor = [UIColor whiteColor];
//
[footer arrowView].image=[UIImage imageNamed:@"refresh_arrow_white"];
tableView.mj_footer=footer;
tableView.mj_footer.automaticallyChangeAlpha = YES;
}
+ (UIColor *) colorWithHexString:(NSString *) hex
{
NSString *cleanString = [hex stringByReplacingOccurrencesOfString:@"#" withString:@""];
CGFloat alpha = 1.0;
if ([cleanString length] == 8) {
alpha = 1-[[cleanString.mutableCopy substringToIndex:2] floatValue];
cleanString = [cleanString.mutableCopy substringFromIndex:2];
}
if([cleanString length] == 3) {
cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@",
[cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)],
[cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)],
[cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]];
}
if([cleanString length] == 6) {
cleanString = [cleanString stringByAppendingString:@"ff"];
}
unsigned int baseValue;
[[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue];
float red = ((baseValue >> 24) & 0xFF)/255.0f;
float green = ((baseValue >> 16) & 0xFF)/255.0f;
float blue = ((baseValue >> 8) & 0xFF)/255.0f;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
// 16
+ (UIColor *) colorWithHex:(long) hexColor
{
float red = ((float)((hexColor & 0xFF0000) >> 16))/255.0;
float green = ((float)((hexColor & 0xFF00) >> 8))/255.0;
float blue = ((float)(hexColor & 0xFF))/255.0;
return [UIColor colorWithRed:red green:green blue:blue alpha:1];
}
+ (UIColor *) colorWithHex:(long) hexColor alpha:(CGFloat)alpha{
float red = ((float)((hexColor & 0xFF0000) >> 16))/255.0;
float green = ((float)((hexColor & 0xFF00) >> 8))/255.0;
float blue = ((float)(hexColor & 0xFF))/255.0;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
+ (UIImage *) imageWithColor:(UIColor *)color {
return [self imageWithColor:color size:CGSizeMake(1,1)];
}
+ (UIImage *) imageWithColor:(UIColor *)color
size:(CGSize)size
{
if(color==nil){
color=[UIColor redColor];
}
if(size.width<1){
size.width=1;
}
if(size.height<1){
size.height=1;
}
@autoreleasepool {
CGRect rect = CGRectMake(0, 0, size.width, size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctx, color.CGColor);
CGContextFillRect(ctx, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
}
//
+ (void) leftNavItem:(UIViewController *)current
button:(UIButton *)button
offsetX:(CGFloat)offsetX
{
UIBarButtonItem *leftItem=[[UIBarButtonItem alloc] initWithCustomView:button];
UIBarButtonItem *spaceItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
spaceItem.width = offsetX;
current.navigationItem.leftBarButtonItems = @[spaceItem,leftItem];
}
/** */
+ (CGSize)sizeWith:(NSString *) text
font:(UIFont *) fontSize
width:(NSInteger) width
{
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.lineBreakMode=NSLineBreakByCharWrapping;
NSDictionary *attribute = @{NSFontAttributeName: fontSize, NSParagraphStyleAttributeName:paragraph};
CGSize size = [text boundingRectWithSize:CGSizeMake(width,MAXFLOAT) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
return size;
}
+ (NSMutableAttributedString *)setHtmlStr:(NSString *)html isAnalyze:(BOOL)isAnalyze
{
NSAttributedString *briefAttrStr;
if (isAnalyze) {
briefAttrStr = [[NSAttributedString alloc] initWithData:[[NSString stringWithFormat:@"%@<head><style>img{width:%fpx !important;height:auto}</style></head>",html,ScreenViewWidth - 80] dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];
}else{
briefAttrStr = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];
}
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:2];
paragraphStyle.firstLineHeadIndent = 20;
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithAttributedString:briefAttrStr];
[attr addAttributes:@{NSFontAttributeName: Font(15)} range:NSMakeRange(0, attr.string.length)];
if (!isAnalyze) {
[attr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [attr length])];
}
return attr;
}
+ (NSString *)autoWebAutoImageSize:(NSString *)html{
NSString * regExpStr = @"<img\\s+.*?\\s+(style\\s*=\\s*.+?\")";
NSRegularExpression *regex=[NSRegularExpression regularExpressionWithPattern:regExpStr options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *matches=[regex matchesInString:html
options:0
range:NSMakeRange(0, [html length])];
NSMutableArray * mutArray = [NSMutableArray array];
for (NSTextCheckingResult *match in matches) {
NSString* group1 = [html substringWithRange:[match rangeAtIndex:1]];
[mutArray addObject: group1];
}
NSUInteger len = [mutArray count];
for (int i = 0; i < len; ++ i) {
html = [html stringByReplacingOccurrencesOfString:mutArray[i] withString: @"style=\"width:200; height:auto;\""];
}
return html;
}
@end

View File

@@ -0,0 +1,27 @@
//
// ZWTimer.h
// ZWTimer
//
// Created by zzw on 2018/5/7.
// Copyright © 2018年 zzw. All rights reserved.
//
#import <Foundation/Foundation.h>
@class ZWTimer;
@protocol ZWTimerDelegate <NSObject>
@required
- (void)onTimerFired:(ZWTimer*)timer;
@end
@interface ZWTimer : NSObject
- (void)startTimer:(NSTimeInterval)seconds
delegate:(id<ZWTimerDelegate>)delegate
repeats:(BOOL)repeats;
- (void)startGCDTimer:(NSTimeInterval)seconds
delegate:(id<ZWTimerDelegate>)delegate;
- (void)stopTimer;
@end

View File

@@ -0,0 +1,102 @@
//
// ZWTimer.m
// ZWTimer
//
// Created by zzw on 2018/5/7.
// Copyright © 2018 zzw. All rights reserved.
//
#import "ZWTimer.h"
@interface ZWTimer ()
@property (nonatomic,weak) id<ZWTimerDelegate> delegate;
@property (nonatomic,strong) dispatch_source_t gcdTimer;
@property (nonatomic,strong) NSTimer * timer;
@end
@implementation ZWTimer
- (void)startTimer:(NSTimeInterval)seconds
delegate:(id<ZWTimerDelegate>)delegate
repeats:(BOOL)repeats{
self.delegate = delegate;
if (self.timer)
{
[self.timer invalidate];
self.timer = nil;
}
//
self.timer = [NSTimer scheduledTimerWithTimeInterval:seconds
target:self
selector:@selector(onTimer:)
userInfo:nil
repeats:repeats];
// seconds
[self.timer fire];
}
- (void)startGCDTimer:(NSTimeInterval)seconds
delegate:(id<ZWTimerDelegate>)delegate{
self.delegate = delegate;
//
dispatch_queue_t queue = dispatch_get_main_queue();
if (self.gcdTimer) {
dispatch_cancel(self.gcdTimer);
self.gcdTimer = nil;
}
// (dispatch_source_tOC)
self.gcdTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
uint64_t interval = (uint64_t)(seconds * NSEC_PER_SEC);
// DISPATCH_TIME_NOW
dispatch_source_set_timer(self.gcdTimer, DISPATCH_TIME_NOW, interval, 0);
//
dispatch_source_set_event_handler(self.gcdTimer, ^{
//
if (self.delegate && [self.delegate respondsToSelector:@selector(onTimerFired:)]) {
[self.delegate onTimerFired:self];
}else{
dispatch_cancel(self.gcdTimer);
self.gcdTimer = nil;
}
});
dispatch_resume(self.gcdTimer);
}
- (void)onTimer: (NSTimer *)timer{
if (self.delegate && [self.delegate respondsToSelector:@selector(onTimerFired:)]) {
[self.delegate onTimerFired:self];
}else{
[self.timer invalidate];
self.timer = nil;
}
}
- (void)stopTimer{
if (self.gcdTimer) {
dispatch_cancel(self.gcdTimer);
self.gcdTimer = nil;
}
if (self.timer) {
[self.timer invalidate];
self.timer = nil;
}
}
- (void)dealloc{
[self stopTimer];
NSLog(@"定时器释放");
}
@end

View File

@@ -0,0 +1,18 @@
//
// wheelView.h
// 君分时代
//
// Created by 贠小飞 on 2018/4/10.
// Copyright © 2018年 贠小飞. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface wheelView : UIView
//多少秒滚动一次,默认 == 3
@property (nonatomic, assign) NSInteger seconds;
- (instancetype)initWithFrame:(CGRect)frame pictures:(NSArray *)pictures;
@property(nonatomic, copy) void (^imageClickBlock)(void);
@end

View File

@@ -0,0 +1,198 @@
//
// wheelView.m
//
//
// Created by on 2018/4/10.
// Copyright © 2018 . All rights reserved.
//
#import "wheelView.h"
#import <UIImageView+WebCache.h>
#define CLICK_LOOP //pageControl
#define SLIP_RIGHT 0
#define SLIP_LEFT 1
@interface wheelView ()<UIScrollViewDelegate>{
NSMutableArray *_imageViews;
NSArray *_pictureNames;
UIScrollView *_scrollView;
UIPageControl *_pageControl;
BOOL _slipDirectory;
dispatch_source_t _timer;
}
@end
@implementation wheelView
- (instancetype)initWithFrame:(CGRect)frame pictures:(NSArray *)pictureNames
{
self = [super initWithFrame:frame];
if (self) {
_pictureNames = pictureNames;
[self setScrollView];
[self setImageViews];
// [self setPageControl];
// [self createTimer];
if (!_seconds) {
_seconds = 2;
}
}
return self;
}
//10
-(void)createTimer {
__weak typeof(self) weakSelf = self;
dispatch_queue_t queue = dispatch_get_main_queue();
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_time_t start = dispatch_time( DISPATCH_TIME_NOW, (int64_t)(1.0*NSEC_PER_SEC));
uint64_t interval = (uint64_t)(1.0*NSEC_PER_SEC);
dispatch_source_set_timer(_timer, start, interval, 0);
dispatch_source_set_event_handler(_timer, ^{
static NSInteger count = 0;
count++;
if (count == self.seconds) {
count = 0;
[weakSelf refresh];
}
});
dispatch_resume(_timer);
}
- (void)refresh {
[_scrollView setContentOffset:CGPointMake(self.frame.size.width*2, 0) animated:YES];
}
- (void)setScrollView {
_scrollView = [[UIScrollView alloc] initWithFrame:self.frame];
//
_scrollView.bounces = NO;
//
_scrollView.pagingEnabled = YES;
//
_scrollView.contentSize = CGSizeMake(self.frame.size.width*3, self.frame.size.height);
//
_scrollView.contentOffset = CGPointMake(self.frame.size.width, 0);
//
_scrollView.showsHorizontalScrollIndicator = NO;
_scrollView.showsVerticalScrollIndicator = NO;
_scrollView.delegate = self;
[self addSubview:_scrollView];
}
- (void)setPageControl {
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 30)];
_pageControl.center = CGPointMake(self.frame.size.width/2, self.frame.size.height-20);
_pageControl.numberOfPages = _pictureNames.count;
_pageControl.currentPage = 0;
_pageControl.pageIndicatorTintColor = [UIColor whiteColor];
_pageControl.currentPageIndicatorTintColor = [UIColor grayColor];
[_pageControl addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_pageControl];
}
- (void)onClick:(UIPageControl *)pc {
if (pc.currentPage == [(UIImageView *)_imageViews[0] tag]
#ifdef CLICK_LOOP
|| (pc.currentPage==0)
#endif
) {
//
[_scrollView setContentOffset:CGPointZero animated:YES];
} else if (pc.currentPage == [(UIImageView *)_imageViews[2] tag]
#ifdef CLICK_LOOP
|| (pc.currentPage==_pictureNames.count-1)
#endif
) {
//
[_scrollView setContentOffset:CGPointMake(self.frame.size.width*2, 0) animated:YES];
}
}
- (void)setImageViews {
_imageViews = [NSMutableArray array];
for (int i=0; i<3; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.frame.size.width*i, 0, self.frame.size.width, self.frame.size.height)];
[_imageViews addObject:imageView];
imageView.userInteractionEnabled = YES;
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.tag = (_pictureNames.count-1+i)%_pictureNames.count;
[self setImageToView:imageView];
[_scrollView addSubview:imageView];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapMethod)];
[imageView addGestureRecognizer:tap];
}
}
- (void)tapMethod {
if (self.imageClickBlock) {
self.imageClickBlock();
}
}
//viewimage
- (void)setImageToView:(UIImageView *)view {
if (view.frame.size.height == [UIScreen mainScreen].bounds.size.height) {
NSString *imageName = _pictureNames[view.tag];
// UIImage *image = [UIImage imageNamed:imageName];
[view sd_setImageWithURL:[NSURL URLWithString:imageName]];
// view.image = image;
}else{
//
[view sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",_pictureNames[view.tag]]]];
}
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
[self update];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
[self update];
}
- (void)update {
int flag = 0;
if (_scrollView.contentOffset.x > self.frame.size.width) {
//
flag = 1;
_slipDirectory = SLIP_LEFT;
} else if (_scrollView.contentOffset.x == 0) {
//
flag = -1;
_slipDirectory = SLIP_RIGHT;
} else {
//
return;
}
for (UIImageView *imageView in _imageViews) {
//tag
imageView.tag = (imageView.tag+flag+_pictureNames.count)%_pictureNames.count;
//image
[self setImageToView:imageView];
}
//使
_scrollView.contentOffset = CGPointMake(self.frame.size.width, 0);
//pageControl
_pageControl.currentPage = [(UIImageView *)_imageViews[1] tag];
}
-(void)dealloc {
// dispatch_cancel(_timer);
}
@end

View File

@@ -0,0 +1,27 @@
//
// UIButton+Gradient.h
// testLayer
//
// Created by tb on 17/3/17.
// Copyright © 2017年 com.tb. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "UIImage+Gradient.h"
@interface UIButton (Gradient)
/**
* 根据给定的颜色,设置按钮的颜色
* @param btnSize 这里要求手动设置下生成图片的大小防止coder使用第三方layout,没有设置大小
* @param clrs 渐变颜色的数组
* @param percent 渐变颜色的占比数组
* @param type 渐变色的类型
*/
- (UIButton *)gradientButtonWithSize:(CGSize)btnSize colorArray:(NSArray *)clrs percentageArray:(NSArray *)percent gradientType:(GradientType)type;
- (void)setJianBianWithCGSize:(CGSize)size;
@end

View File

@@ -0,0 +1,26 @@
//
// UIButton+Gradient.m
// testLayer
//
// Created by tb on 17/3/17.
// Copyright © 2017 com.tb. All rights reserved.
//
#import "UIButton+Gradient.h"
@implementation UIButton (Gradient)
- (UIButton *)gradientButtonWithSize:(CGSize)btnSize colorArray:(NSArray *)clrs percentageArray:(NSArray *)percent gradientType:(GradientType)type {
UIImage *backImage = [[UIImage alloc]createImageWithSize:btnSize gradientColors:clrs percentage:percent gradientType:type];
[self setBackgroundImage:backImage forState:UIControlStateNormal];
return self;
}
- (void)setJianBianWithCGSize:(CGSize)size{
UIImage *backImage = [[UIImage alloc]createImageWithSize:size gradientColors:@[mainLightColor,mainDeepColor] percentage:@[@(0),@(1)] gradientType:GradientFromLeftToRight];
[self setBackgroundImage:backImage forState:UIControlStateNormal];
}
@end

View File

@@ -0,0 +1,29 @@
//
// UIImage+Gradient.h
// testLayer
//
// Created by tb on 17/3/17.
// Copyright © 2017年 com.tb. All rights reserved.
//
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, GradientType) {
GradientFromTopToBottom = 1, //从上到下
GradientFromLeftToRight, //从做到右
GradientFromLeftTopToRightBottom, //从上到下
GradientFromLeftBottomToRightTop //从上到下
};
@interface UIImage (Gradient)
/**
* 根据给定的颜色,生成渐变色的图片
* @param imageSize 要生成的图片的大小
* @param colorArr 渐变颜色的数组
* @param percents 渐变颜色的占比数组
* @param gradientType 渐变色的类型
*/
- (UIImage *)createImageWithSize:(CGSize)imageSize gradientColors:(NSArray *)colorArr percentage:(NSArray *)percents gradientType:(GradientType)gradientType;
@end

View File

@@ -0,0 +1,66 @@
//
// UIImage+Gradient.m
// testLayer
//
// Created by tb on 17/3/17.
// Copyright © 2017 com.tb. All rights reserved.
//
#import "UIImage+Gradient.h"
@implementation UIImage (Gradient)
- (UIImage *)createImageWithSize:(CGSize)imageSize gradientColors:(NSArray *)colors percentage:(NSArray *)percents gradientType:(GradientType)gradientType {
NSAssert(percents.count <= 5, @"输入颜色数量过多如果需求数量过大请修改locations[]数组的个数");
NSMutableArray *ar = [NSMutableArray array];
for(UIColor *c in colors) {
[ar addObject:(id)c.CGColor];
}
// NSUInteger capacity = percents.count;
// CGFloat locations[capacity];
CGFloat locations[5];
for (int i = 0; i < percents.count; i++) {
locations[i] = [percents[i] floatValue];
}
UIGraphicsBeginImageContextWithOptions(imageSize, YES, 1);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, locations);
CGPoint start;
CGPoint end;
switch (gradientType) {
case GradientFromTopToBottom:
start = CGPointMake(imageSize.width/2, 0.0);
end = CGPointMake(imageSize.width/2, imageSize.height);
break;
case GradientFromLeftToRight:
start = CGPointMake(0.0, imageSize.height/2);
end = CGPointMake(imageSize.width, imageSize.height/2);
break;
case GradientFromLeftTopToRightBottom:
start = CGPointMake(0.0, 0.0);
end = CGPointMake(imageSize.width, imageSize.height);
break;
case GradientFromLeftBottomToRightTop:
start = CGPointMake(0.0, imageSize.height);
end = CGPointMake(imageSize.width, 0.0);
break;
default:
break;
}
CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
CGGradientRelease(gradient);
CGContextRestoreGState(context);
CGColorSpaceRelease(colorSpace);
UIGraphicsEndImageContext();
return image;
}
@end

View File

@@ -0,0 +1,19 @@
//
// GradientLabel.h
// MoHuanXingYu
//
// Created by apple on 2020/4/14.
// Copyright © 2020 MoHuanXingYu. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface GradientLabel : UILabel
- (void) setGradientLabelColors: (NSArray *)colors;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,66 @@
//
// GradientLabel.m
// MoHuanXingYu
//
// Created by apple on 2020/4/14.
// Copyright © 2020 MoHuanXingYu. All rights reserved.
//
#import "GradientLabel.h"
@interface GradientLabel ()
@property (nonatomic, strong) UILabel *label;
@property (nonatomic, strong) CAGradientLayer *gradientLayer;
@property (nonatomic, strong) NSArray * colors;//
@end
@implementation GradientLabel
- (CAGradientLayer *)gradientLayer {
if (!_gradientLayer) {
_gradientLayer = [CAGradientLayer layer];
_gradientLayer.startPoint = CGPointMake(0.0,0.0);
_gradientLayer.endPoint = CGPointMake(1.0, 1.0);
_gradientLayer.frame = self.label.frame;
_gradientLayer.colors = self.colors?:@[[UIColor whiteColor], [UIColor blackColor]];
}
return _gradientLayer;
}
- (void) setGradientLabelColors: (NSArray *)colors {
self.colors = colors;
if (self.label == nil) {
self.label = [[UILabel alloc] init];
[self addSubview:self.label];
}
self.label.text = self.text;
[self.label setFont:self.font?:[UIFont systemFontOfSize:13]];
[self.label setTextAlignment:self.textAlignment?:NSTextAlignmentLeft];
// text
self.text = @"";
}
-(void)layoutSubviews {
[super layoutSubviews];
[self.label setFrame:self.bounds];
// addSublayer
if (self.gradientLayer.sublayers != nil) {
[self.gradientLayer removeFromSuperlayer];
}
[self.layer addSublayer:self.gradientLayer];
self.gradientLayer.mask = self.label.layer;
}
@end

View File

@@ -0,0 +1,325 @@
//
// BJHttpTool.h
// MoHuanXingYu
//
// Created by apple on 2020/9/16.
// Copyright © 2020 MoHuanXingYu. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
请求成功的block
*/
typedef void(^MLRequestSuccess)(id response);
/**
请求失败的block
*/
typedef void(^MLRequestFailure)(NSError *error);
typedef void (^MLProgress)(NSProgress *progress);
NS_ASSUME_NONNULL_BEGIN
@interface BJHttpTool : NSObject
#pragma mark ====================== 公共分类接口 ======================
//轮播图列表
+ (NSURLSessionTask *)BJ_get_banner_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取充值列表
+ (NSURLSessionTask *)BJ_recharge_payListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)BJ_pay_rechargePayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)BJ_Customize_PayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 用户操作 ======================
//获取系统基础配置
+ (NSURLSessionTask *)BJ_get_system_base_configWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//上传用户相册
+ (NSURLSessionTask *)BJ_Add_User_AlbumsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除用户相册照片
+ (NSURLSessionTask *)BJ_Delete_User_AlbumsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 登录注册-短信 ======================
//登录
+ (NSURLSessionTask *)BJ_user_loginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//注册
+ (NSURLSessionTask *)BJ_login_user_regWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送短信验证码
+ (NSURLSessionTask *)BJ_login_send_smsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 陪玩 ======================
//陪玩首页接口,获取轮播图,列表和前三名推荐
+ (NSURLSessionTask *)BJ_player_indexWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩首页,获取推荐和对应分类的数据,分页
+ (NSURLSessionTask *)BJ_get_player_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取陪玩详情
+ (NSURLSessionTask *)BJ_get_player_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取我的陪玩接单订单
+ (NSURLSessionTask *)BJ_get_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取我的陪玩下单订单
+ (NSURLSessionTask *)BJ_get_user_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的陪玩接单详情
+ (NSURLSessionTask *)BJ_get_player_order_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消订单
+ (NSURLSessionTask *)BJ_cancel_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的陪玩下单详情
+ (NSURLSessionTask *)BJ_get_user_order_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩接单
+ (NSURLSessionTask *)BJ_take_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩下单
+ (NSURLSessionTask *)BJ_create_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取游戏列表及审核状态
+ (NSURLSessionTask *)BJ_get_player_game_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//申请陪玩
+ (NSURLSessionTask *)BJ_apply_play_gameWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取审核状态
+ (NSURLSessionTask *)BJ_get_apply_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取申请详情,审核失败重新提交和修改陪玩信息的时候用
+ (NSURLSessionTask *)BJ_get_apply_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//实名认证
+ (NSURLSessionTask *)BJ_real_name_authenticationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩个人主页
+ (NSURLSessionTask *)BJ_player_home_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩单价列表
+ (NSURLSessionTask *)BJ_player_play_priceWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 房间 ======================
//获取聊天室分类
+ (NSURLSessionTask *)BJ_get_room_typeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取制定房间分类,推荐,娱乐,陪玩等
+ (NSURLSessionTask *)BJ_get_category_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间列表
+ (NSURLSessionTask *)BJ_get_room_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间排行榜数据
+ (NSURLSessionTask *)BJ_get_room_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间外总排行榜数据
+ (NSURLSessionTask *)BJ_get_user_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取聊天室 贡献和魅力榜前三名
+ (NSURLSessionTask *)getTop_threeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取礼物和背包列表
+ (NSURLSessionTask *)getGift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间详情enterRoom
+ (NSURLSessionTask *)BJ_enter_room_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间麦位状态
+ (NSURLSessionTask *)getMicrophone_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//上麦
+ (NSURLSessionTask *)getUp_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//下麦
+ (NSURLSessionTask *)getGo_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//抱人上麦
+ (NSURLSessionTask *)getRoom_owner_up_microWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//强制下麦
+ (NSURLSessionTask *)getRoom_owner_down_microWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为封闭麦位
+ (NSURLSessionTask *)getShut_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为公开麦位
+ (NSURLSessionTask *)getOpen_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//禁麦
+ (NSURLSessionTask *)getIs_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//开麦
+ (NSURLSessionTask *)getRemove_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//禁言
+ (NSURLSessionTask *)getIs_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//解除禁言
+ (NSURLSessionTask *)getCancelJinYanWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取禁言状态
+ (NSURLSessionTask *)getNot_speak_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//踢出房间
+ (NSURLSessionTask *)getOut_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取个人信息
+ (NSURLSessionTask *)get_other_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取他人信息
+ (NSURLSessionTask *)get_base_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取表情列表
+ (NSURLSessionTask *)getEmoji_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间设置
+ (NSURLSessionTask *)getRoomInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间所有背景图
+ (NSURLSessionTask *)getRoomBacksInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提交房间设置
+ (NSURLSessionTask *)getEdit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送表情
+ (NSURLSessionTask *)getGet_emojiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送礼物
+ (NSURLSessionTask *)getGift_queueWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 盲盒巡乐会 ======================
//盲盒巡乐会初始化
+ (NSURLSessionTask *)getBlindXunlehui_initWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//清空魅力值
+ (NSURLSessionTask *)getCleanMeiLiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取收藏的房间列表
+ (NSURLSessionTask *)getGet_mykeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//退出房间
+ (NSURLSessionTask *)getQuit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取添加收藏
+ (NSURLSessionTask *)getRoom_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消收藏
+ (NSURLSessionTask *)getRemove_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间成员列表
+ (NSURLSessionTask *)get_room_usersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//申请上麦
+ (NSURLSessionTask *)getuser_applyWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//申请上麦人员列表
+ (NSURLSessionTask *)getuser_apply_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//清空房间内麦位上所有人的魅力
+ (NSURLSessionTask *)clear_user_charm_allWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 用户操作 ======================
//获取用户信息详情
+ (NSURLSessionTask *)BJ_get_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取黑名单
+ (NSURLSessionTask *)getBlackListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//加入黑名单
+ (NSURLSessionTask *)getAdd_blacklistWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//移除黑名单
+ (NSURLSessionTask *)getCancel_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取装饰列表
+ (NSURLSessionTask *)BJ_get_dress_up_productWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设置用户头像框,座驾,气泡
+ (NSURLSessionTask *)BJ_get_dress_up_setDressUpDataWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//修改用户信息
+ (NSURLSessionTask *)BJ_modify_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的等级,贡献加魅力等级
+ (NSURLSessionTask *)BJ_get_user_charm_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//转赠
+ (NSURLSessionTask *)BJ_user_give_integralParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物赠送记录接口
+ (NSURLSessionTask *)BJ_get_send_gift_user_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物赠送明细记录接口
+ (NSURLSessionTask *)BJ_get_send_gift_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物接收记录接口
+ (NSURLSessionTask *)BJ_get_receive_gift_user_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物接收明细记录接口
+ (NSURLSessionTask *)BJ_get_receive_gift_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//用户签到
+ (NSURLSessionTask *)BJ_user_signWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//订单收入明细
+ (NSURLSessionTask *)BJ_get_player_order_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物收入明细
+ (NSURLSessionTask *)BJ_get_gift_reward_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取用户余额
+ (NSURLSessionTask *)BJ_get_user_moneyWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//兑换巧鱼币
+ (NSURLSessionTask *)exchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//兑换查询
+ (NSURLSessionTask *)exchange_checkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提现
+ (NSURLSessionTask *)getMy_tixianWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//修改交易密码
+ (NSURLSessionTask *)BJ_modify_trade_passwordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//修改密码
+ (NSURLSessionTask *)BJ_modify_passwordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//邀请人列表
+ (NSURLSessionTask *)BJ_get_user_child_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//关注
+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消关注
+ (NSURLSessionTask *)getCancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//关注列表
+ (NSURLSessionTask *)BJ_get_user_follow_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//粉丝列表
+ (NSURLSessionTask *)BJ_get_user_fans_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark -------------------PK厅接口-------------------------
//获取房间PK记录
+ (NSURLSessionTask *)BJ_get_room_pk_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取PK房间详情
+ (NSURLSessionTask *)BJ_get_room_pk_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//房间发起PK
+ (NSURLSessionTask *)BJ_launch_room_pkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 游戏 ======================
//游戏列表
+ (NSURLSessionTask *)BJ_get_game_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//游戏详情
+ (NSURLSessionTask *)BJ_get_game_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//根据出生日期获取星座
+ (NSURLSessionTask *)BJ_get_user_constellationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//用户反馈
+ (NSURLSessionTask *)BJ_create_suggestWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 社区 ======================
//获取社区列表
+ (NSURLSessionTask *)BJ_get_zone_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发布社区信息
+ (NSURLSessionTask *)BJ_publish_zoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//动态点赞
+ (NSURLSessionTask *)BJ_praise_zoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ====================== 消息通知 ======================
//官方消息,消息列表
+ (NSURLSessionTask *)getOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//官方消息,系统消息
+ (NSURLSessionTask *)getMini_officialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//购买爵位
+ (NSURLSessionTask *)BJPay_nobilityWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark -------------------宝箱-------------------------
//奖池物品列表
+ (NSURLSessionTask *)getAwardJiangChiListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//开奖
+ (NSURLSessionTask *)getAwardListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//中奖记录
+ (NSURLSessionTask *)getAwardRecordListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//规则说明
+ (NSURLSessionTask *)getRewardInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//手气榜
+ (NSURLSessionTask *)getShouQiBangListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取转盘礼物
+ (NSURLSessionTask *)BJ_get_zhuanpan_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//绑定银行卡
+ (NSURLSessionTask *)BJ_binding_bank_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ——————— 新增 ———————
//上周周星榜单
+ (NSURLSessionTask *)BJ_Last_week_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//周星礼物列表
+ (NSURLSessionTask *)BJ_Week_star_gift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//本周周星榜单
+ (NSURLSessionTask *)BJ_Now_week_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//幸运摩天轮
+ (NSURLSessionTask *)BJ_Get_motian_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取公会详情
+ (NSURLSessionTask *)BJ_Get_the_guild_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除私密关系
+ (NSURLSessionTask *)BJ_Del_user_relationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//周星榜前4
+ (NSURLSessionTask *)BJ_Now_week_rank_fourWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//首页首页cp对象
+ (NSURLSessionTask *)BJ_GetHome_top_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的cp详情
+ (NSURLSessionTask *)BJ_GetMy_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//专属福利
+ (NSURLSessionTask *)BJ_GetMy_cp_txkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark ——————— 相亲房 ———————
//相亲-开始
+ (NSURLSessionTask *)BJ_XQPrepare_stageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-心动选择
+ (NSURLSessionTask *)BJ_XQChoose_love_stageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-亮灯/爆灯
+ (NSURLSessionTask *)BJ_XQUser_room_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-嘉宾麦自己灭灯
+ (NSURLSessionTask *)BJ_XQClose_xq_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-指定礼物
+ (NSURLSessionTask *)BJ_XQ_appoint_giftParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-闭灯送出/牵线送出
+ (NSURLSessionTask *)BJ_XQ_reverse_send_giftParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-关闭相亲活动
+ (NSURLSessionTask *)BJ_XQ_close_xq_activityParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-聚光灯
+ (NSURLSessionTask *)BJ_XQ_ju_guang_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-配对
+ (NSURLSessionTask *)BJ_XQ_xq_pdParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-主持亮明身份
+ (NSURLSessionTask *)BJ_XQ_room_show_xq_sfParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//相亲-修改房间类型
+ (NSURLSessionTask *)BJ_XQ_room_modify_room_infoParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//签到记录
+ (NSURLSessionTask *)BJ_User_day_sign_logParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//日常签到
+ (NSURLSessionTask *)BJ_User_day_signParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取客服信息
+ (NSURLSessionTask *)BJ_User_get_kf_messageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取剩余抽奖次数
+ (NSURLSessionTask *)BJ_User_get_user_box_timesParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,792 @@
//
// BJHttpTool.m
// MoHuanXingYu
//
// Created by apple on 2020/9/16.
// Copyright © 2020 MoHuanXingYu. All rights reserved.
//
#import "BJHttpTool.h"
#import "Global.h"
#import "MLNetWorkHelper.h"
@implementation BJHttpTool
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_get_banner_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/banner/get_banner_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_recharge_payListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/pay/pay_list") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)BJ_pay_rechargePayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/pay/rechargePay") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)BJ_Customize_PayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/Customize_Pay/index") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_get_system_base_configWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/api/get_system_base_config") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Add_User_AlbumsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/add_user_albums") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Delete_User_AlbumsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/delete_user_albums") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== - ======================
//
+ (NSURLSessionTask *)BJ_user_loginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/login/user_login") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_login_user_regWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/login/user_reg") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_login_send_smsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/login/send_sms") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_player_indexWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/api/player_index") parameters:parameters success:success failure:failure];
}
//,
+ (NSURLSessionTask *)BJ_get_player_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_player_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_player_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_player_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_player_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_user_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_order_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_user_order_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_player_order_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_player_order_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_cancel_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/cancel_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_take_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/take_player_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_create_player_orderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/create_player_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_player_game_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_player_game_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_apply_play_gameWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/apply_play_game") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_apply_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_apply_status") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_apply_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/get_apply_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_real_name_authenticationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/real_name_authentication") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_player_home_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/player_home_page") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_player_play_priceWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/api/play_price") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//,
+ (NSURLSessionTask *)BJ_get_room_typeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_type") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_category_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_category_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_room_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCleanMeiLiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/clear_meili") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getEmoji_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_emoji") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGet_emojiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_emoji") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_room_usersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_user_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGift_queueWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/send_gift") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)getBlindXunlehui_initWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure {
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/blind_box/blind_box_init") parameters:parameters success:success failure:failure];
}
//enterRoom
+ (NSURLSessionTask *)BJ_enter_room_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/enter_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_room_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_rank") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_user_rank") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getTop_threeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_user_rank_top") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMicrophone_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_micro_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getUp_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/user_up_micro") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGo_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/user_down_micro") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_owner_up_microWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/room_owner_up_micro") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_owner_down_microWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/room_owner_down_micro") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getShut_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/shut_microphone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOpen_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/open_microphone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIs_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/is_sound") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRemove_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/remove_sound") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIs_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/is_black") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancelJinYanWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/is_black_remove") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getNot_speak_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/not_speak_status") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOut_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/out_room") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_other_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_other_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_base_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_base_user_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGet_mykeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_user_collect_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoomInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoomBacksInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_background_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getEdit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/modify_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/collect_room") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRemove_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/un_collect_room") parameters:parameters success:success failure:failure];
}
//退
+ (NSURLSessionTask *)getQuit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/quit_hand") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getuser_applyWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/user_apply") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getuser_apply_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/user_apply_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)clear_user_charm_allWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/clear_user_charm_all") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_get_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getBlackListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_blacklist") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAdd_blacklistWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/add_blacklist") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancel_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/remove_blacklist") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_dress_up_productWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_decorate_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_dress_up_setDressUpDataWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dress_up/setDressUpData") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_modify_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/modify_user_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_charm_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_level_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_user_give_integralParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/user_give_integral") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_send_gift_user_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_send_gift_user_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_send_gift_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_send_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_receive_gift_user_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_receive_gift_user_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_receive_gift_listParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_receive_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_user_signWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/user_sign") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_player_order_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_player_order_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_gift_reward_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_gift_reward_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_moneyWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_money") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/exchange") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchange_checkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/exchange_check") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_tixianWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/user_withdrawal") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_modify_trade_passwordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/modify_trade_password") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_modify_passwordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/api/modify_password") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_child_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_child_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_constellationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_constellation") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_create_suggestWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/suggest/create_suggest") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/follow_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/unfollow_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_follow_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_follow_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_user_fans_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_fans_list") parameters:parameters success:success failure:failure];
}
#pragma mark -------------------PK-------------------------
//PK
+ (NSURLSessionTask *)BJ_get_room_pk_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_pk_list") parameters:parameters success:success failure:failure];
}
//PK
+ (NSURLSessionTask *)BJ_get_room_pk_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_pk_info") parameters:parameters success:success failure:failure];
}
//PK
+ (NSURLSessionTask *)BJ_launch_room_pkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/launch_room_pk") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_get_game_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/game/get_game_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_game_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/game/get_game_info") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)BJ_get_zone_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/User_Zone/get_zone_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_publish_zoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/User_Zone/publish_zone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_praise_zoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/User_Zone/praise_zone") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
//
+ (NSURLSessionTask *)getOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/Community/official_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMini_officialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/Community/mini_official") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJPay_nobilityWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/pay/pay_nobility") parameters:parameters success:success failure:failure];
}
#pragma mark --------------------------------------------
//
+ (NSURLSessionTask *)getAwardJiangChiListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/get_box_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/open_box") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardRecordListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/get_user_box_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRewardInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/get_box_note") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getShouQiBangListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/sqb") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_get_zhuanpan_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/get_zhuanpan_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_binding_bank_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/binding_bank_card") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Last_week_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/last_week_rank") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Week_star_gift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/week_star_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Now_week_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/now_week_rank") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Get_motian_rankWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dating_room/get_motian_rank") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Get_the_guild_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/guild/get_the_guild_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_Del_user_relationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dating_room/del_user_relation") parameters:parameters success:success failure:failure];
}
//4
+ (NSURLSessionTask *)BJ_Now_week_rank_fourWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/now_week_rank_four") parameters:parameters success:success failure:failure];
}
//cp
+ (NSURLSessionTask *)BJ_GetHome_top_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/top_cp") parameters:parameters success:success failure:failure];
}
//cp
+ (NSURLSessionTask *)BJ_GetMy_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/my_cp") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_GetMy_cp_txkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift/my_cp_txk") parameters:parameters success:success failure:failure];
}
//
//-
+ (NSURLSessionTask *)BJ_XQPrepare_stageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/prepare_stage") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQChoose_love_stageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/choose_love_stage") parameters:parameters success:success failure:failure];
}
//-/
+ (NSURLSessionTask *)BJ_XQUser_room_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/user_room_light") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQClose_xq_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/close_xq_light") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_appoint_giftParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/xq_appoint_gift") parameters:parameters success:success failure:failure];
}
//-/线
+ (NSURLSessionTask *)BJ_XQ_reverse_send_giftParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/xq_reverse_send_gift") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_close_xq_activityParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/close_xq_activity") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_ju_guang_lightParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/ju_guang_light") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_xq_pdParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/xq_pd") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_room_show_xq_sfParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/show_xq_sf") parameters:parameters success:success failure:failure];
}
//-
+ (NSURLSessionTask *)BJ_XQ_room_modify_room_infoParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/xq_room/modify_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_User_day_sign_logParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/user_day_sign_log") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_User_day_signParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/user_day_sign") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_User_get_kf_messageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_kf_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)BJ_User_get_user_box_timesParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/box/get_user_box_times") parameters:parameters success:success failure:failure];
}
#pragma mark ====================== ======================
/*********************************************************/
/*
MLNetworkHelper,,,
使MLNetworkHelper/,,便
, ,
,
*/
+ (NSURLSessionTask *)completCompanyUploadFileWithURL:(NSString *)URL parameters:(id)parameters name:(NSString *)name images:(NSArray<UIImage *> *)images fileNames:(NSArray<NSString *> *)fileNames imageScale:(CGFloat)imageScale imageType:(NSString *)imageType audio:(NSString *)audiofilePath progress:(MLProgress)progresssasa success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
[MLNetWorkHelper setRequestTimeoutInterval:8.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
return [MLNetWorkHelper uploadImagesWithURL:URL parameters:parameters name:name images:images fileNames:fileNames imageScale:imageScale imageType:imageType audio:audiofilePath progress:^(NSProgress *progress) {
progresssasa(progress);
} success:^(id responseObject) {
[MLNetWorkHelper openNetworkActivityIndicator:NO];
success(responseObject);
} failure:^(NSError *error) {
[MLNetWorkHelper openNetworkActivityIndicator:NO];
failure(error);
}];
}
#pragma mark -
+ (NSURLSessionTask *)requestWithPostURL:(NSString *)URL parameters:(NSDictionary *)parameter success:(MLRequestSuccess)success failure:(MLRequestFailure)failure {
//
NSString *timestamp = [BJEncryptionTool getNowTimeTimestamp];
NSString *app_sign = [BJEncryptionTool getSignWith:timestamp];
[MLNetWorkHelper setValue:C_string(timestamp) forHTTPHeaderField:@"timestamp"];
[MLNetWorkHelper setValue:C_string(app_sign) forHTTPHeaderField:@"app-sign"];
// ,, , ....
// [MLNetWorkHelper setValue:ML_AppVersion forHTTPHeaderField:@"version"];
[MLNetWorkHelper setRequestTimeoutInterval:20.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:parameter];
if (GVUSER.token.length > 0) {
[dict setObject:GVUSER.token forKey:@"login_token"];
}
MYLog(@"请求链接--%@",URL);
MYLog(@"请求参数--%@",dict);
//
return [MLNetWorkHelper POST:URL parameters:dict success:^(id responseObject) {
// ,, ....
[MLNetWorkHelper openNetworkActivityIndicator:NO];
if ([responseObject[@"code"] integerValue]==200 || [responseObject[@"code"] integerValue]==4) {
//
success(responseObject);
}else if ([responseObject[@"code"] integerValue]==301) {
[MBProgressHUD hideHUD];
//
[MBManager showBriefAlert:@"登录失效,请重新登录"];
[APPDELEGATE setupLoginViewController];
NSError *error = [NSError errorWithDomain:@"" code:[responseObject[@"code"] integerValue] userInfo:nil];
failure(error);
}else{
[MBProgressHUD hideHUD];
if ([responseObject[@"msg"] isEqualToString:@""]) {
return;
}
[MBManager showBriefAlert:responseObject[@"msg"]];
NSError *error = [NSError errorWithDomain:@"" code:[responseObject[@"code"] integerValue] userInfo:nil];
failure(error);
}
} failure:^(NSError *error) {
[MBProgressHUD hideHUD];
//
[MLNetWorkHelper openNetworkActivityIndicator:NO];
// [SVProgressHUD showImage:[UIImage imageNamed:@""] status:@"网络连接错误,请稍后再试"];
failure(error);
}];
}
+ (NSURLSessionTask *)requestWithGetURL:(NSString *)URL parameters:(NSDictionary *)parameter success:(MLRequestSuccess)success failure:(MLRequestFailure)failure {
{
// ,, , ....
// [MLNetWorkHelper setValue:ML_AppVersion forHTTPHeaderField:@"version"];
[MLNetWorkHelper setRequestTimeoutInterval:8.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
//
return [MLNetWorkHelper GET:URL parameters:parameter success:^(id responseObject) {
// ,, ....
[MLNetWorkHelper openNetworkActivityIndicator:NO];
success(responseObject);
} failure:^(NSError *error) {
//
[MLNetWorkHelper openNetworkActivityIndicator:NO];
failure(error);
}];
}
}
@end

View File

@@ -0,0 +1,384 @@
//
// HttpTool.h
// miliao
//
// Created by aa on 2019/6/3.
// Copyright © 2019 miliao. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
请求成功的block
*/
typedef void(^MLRequestSuccess)(id response);
/**
请求失败的block
*/
typedef void(^MLRequestFailure)(NSError *error);
typedef void (^MLProgress)(NSProgress *progress);
@interface HttpTool : NSObject
+ (NSURLSessionTask *)getLoginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getRegisterWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getCodeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getisCodeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
/** 第三方登录注册*/
+ (NSURLSessionTask *)getOtherRegisterWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
/** 第三方登录*/
+ (NSURLSessionTask *)getOtherLoginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - 陪玩APP接口
//游戏列表
+ (NSURLSessionTask *)getGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//单个游戏的列表
+ (NSURLSessionTask *)getDanGeGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//陪玩列表
+ (NSURLSessionTask *)getPeiwanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//已认证游戏列表
+ (NSURLSessionTask *)getRenZhengGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提交订单
+ (NSURLSessionTask *)getSubMitOrderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的下单
+ (NSURLSessionTask *)getMyXiaDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的接单
+ (NSURLSessionTask *)getMyJieDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//订单消息列表
+ (NSURLSessionTask *)getMsglistWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//主播点接单的接口
+ (NSURLSessionTask *)getGoToJieDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的订单详情
+ (NSURLSessionTask *)getMyOrderDetailWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - 首页
//获取轮播
+ (NSURLSessionTask *)getCarouseWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取热门列表
+ (NSURLSessionTask *)getis_popularWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取推荐类别
+ (NSURLSessionTask *)getRoom_recommend_categoriesWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取首页全部房间列表
+ (NSURLSessionTask *)getiHome_allRoomsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取推荐房间列表
+ (NSURLSessionTask *)getis_topWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取指定类别房间列表
+ (NSURLSessionTask *)getRoom_recommend_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//密聊
+ (NSURLSessionTask *)getSecret_chatWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//微星阁
+ (NSURLSessionTask *)getStar_loftWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取收藏列表
+ (NSURLSessionTask *)getGet_mykeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间信息
+ (NSURLSessionTask *)getEnter_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - ROOM
//获取排行榜
+ (NSURLSessionTask *)getLeaderboardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取需要全服播报的房间列表
+ (NSURLSessionTask *)getRoom_publicRoomListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间内排行榜
+ (NSURLSessionTask *)getRoom_rankingWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取添加收藏
+ (NSURLSessionTask *)getRoom_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消收藏
+ (NSURLSessionTask *)getRemove_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间所有背景图
+ (NSURLSessionTask *)getRoomBacksInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间状态
+ (NSURLSessionTask *)getMicrophone_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//上麦
+ (NSURLSessionTask *)getUp_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//专用于用户异常离开频道,直接退后台
+ (NSURLSessionTask *)getGo_microphoneIfUserOffLineWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//下麦
+ (NSURLSessionTask *)getGo_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为封闭麦位
+ (NSURLSessionTask *)getShut_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为公开麦位
+ (NSURLSessionTask *)getOpen_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取个人信息
+ (NSURLSessionTask *)get_other_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//禁麦
+ (NSURLSessionTask *)getIs_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//开麦
+ (NSURLSessionTask *)getRemove_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//禁言
+ (NSURLSessionTask *)getIs_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//解除禁言
+ (NSURLSessionTask *)getCancelJinYanWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取禁言状态
+ (NSURLSessionTask *)getNot_speak_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//踢出房间
+ (NSURLSessionTask *)getOut_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取举报类型
+ (NSURLSessionTask *)getReport_typeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//举报
+ (NSURLSessionTask *)getSend_reportWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//关注
+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消关注
+ (NSURLSessionTask *)getCancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//退出房间
+ (NSURLSessionTask *)getQuit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//退出房间
+ (NSURLSessionTask *)getRoomUsersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为房间管理员
+ (NSURLSessionTask *)getIs_adminWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设为房间管理员
+ (NSURLSessionTask *)getRemove_adminWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//搜索用户
+ (NSURLSessionTask *)getSearch_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间设置
+ (NSURLSessionTask *)getRoomInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提交房间设置
+ (NSURLSessionTask *)getEdit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取当前音乐和音效
+ (NSURLSessionTask *)getNow_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//上一曲、下一曲
+ (NSURLSessionTask *)getNext_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取我的音乐
+ (NSURLSessionTask *)getUser_musicsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取音乐库
+ (NSURLSessionTask *)getLocal_musicsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除我的音乐
+ (NSURLSessionTask *)getDel_user_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除我的音乐
+ (NSURLSessionTask *)getCopy_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取表情列表
+ (NSURLSessionTask *)getEmoji_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送表情
+ (NSURLSessionTask *)getGet_emojiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//添加排麦
+ (NSURLSessionTask *)getAddWaidWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//取消排麦
+ (NSURLSessionTask *)getDelWaitWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取礼物列表
+ (NSURLSessionTask *)getGift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//清空魅力值
+ (NSURLSessionTask *)getCleanMeiLiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送礼物
+ (NSURLSessionTask *)getGift_queueWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送礼物,之后请求接口,判断是否显示金蛋的接口
+ (NSURLSessionTask *)getIsShowGoldImageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取用户vip,徽章微张 图片
+ (NSURLSessionTask *)get_user_vipWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取房间成员列表
+ (NSURLSessionTask *)get_room_usersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送宝石
+ (NSURLSessionTask *)getSend_baoshiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送爆音卡
+ (NSURLSessionTask *)getsend_bykWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//拒绝or接受
+ (NSURLSessionTask *)getHandle_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - 社区
//动态详情
+ (NSURLSessionTask *)getDynamic_detailsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发布动态
+ (NSURLSessionTask *)getSend_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发评论
+ (NSURLSessionTask *)getDynamic_commentWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//官方消息
+ (NSURLSessionTask *)getOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//社区活动
+ (NSURLSessionTask *)getactiveListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//是否有未读消息
+ (NSURLSessionTask *)getunreadMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//评论详情
+ (NSURLSessionTask *)getlookCommentsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//互动消息
+ (NSURLSessionTask *)getmessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取话题内动态
+ (NSURLSessionTask *)getTopic_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取热门话题
+ (NSURLSessionTask *)getTopicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取推荐动态
+ (NSURLSessionTask *)getRecommended_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取最新动态
+ (NSURLSessionTask *)getNew_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取关注动态
+ (NSURLSessionTask *)getdynamicFollowListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除官方消息
+ (NSURLSessionTask *)getDelete_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//社区动态搜索
+ (NSURLSessionTask *)getDynamic_searchWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
/**
我点赞,收藏,转发,评论关注过的动态
param type 1点赞2收藏3转发4评论5关注
*/
+ (NSURLSessionTask *)getMerge_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除评论
+ (NSURLSessionTask *)getDel_comments_threeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//阅读官方消息(标记已读)
+ (NSURLSessionTask *)getRead_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取话题标签
+ (NSURLSessionTask *)get_talk_labelsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取动态详情
+ (NSURLSessionTask *)getdynamic_detailsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
////添加关注
//+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
////取消关注
//+ (NSURLSessionTask *)cancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发布动态
+ (NSURLSessionTask *)send_dynamictWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//删除动态
+ (NSURLSessionTask *)del_communityWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//搜索标签
+ (NSURLSessionTask *)search_labelsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)completCompanyUploadFileWithURL:(NSString *)URL parameters:(id)parameters name:(NSString *)name images:(NSArray<UIImage *> *)images fileNames:(NSArray<NSString *> *)fileNames imageScale:(CGFloat)imageScale imageType:(NSString *)imageType progress:(MLProgress)progresssasa success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//上传多张图片加音频
+ (NSURLSessionTask *)completCompanyUploadFileWithURL:(NSString *)URL parameters:(id)parameters name:(NSString *)name images:(NSArray<UIImage *> *)images fileNames:(NSArray<NSString *> *)fileNames imageScale:(CGFloat)imageScale imageType:(NSString *)imageType audio:(NSString *)audiofilePath progress:(MLProgress)progresssasa success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - 消息
//获取好友列表
+ (NSURLSessionTask *)getUserFriendWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//官方消息
+ (NSURLSessionTask *)getMini_officialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//是否关注
+ (NSURLSessionTask *)getIs_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//拉黑
+ (NSURLSessionTask *)getPull_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//举报
+ (NSURLSessionTask *)getReportWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//官方消息列表
+ (NSURLSessionTask *)getMiniOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取聊天对象的信息,余额,是否是靓号等
+ (NSURLSessionTask *)getSessionUserInfoMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma mark - 我的
//用户个人信息
+ (NSURLSessionTask *)get_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//用户个人主页
+ (NSURLSessionTask *)get_user_home_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//开启CP栏位
+ (NSURLSessionTask *)open_cp_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//CP详情
+ (NSURLSessionTask *)cp_descWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//解除CP
+ (NSURLSessionTask *)remove_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//发送验证码
+ (NSURLSessionTask *)getVerificationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//忘记密码
+ (NSURLSessionTask *)forget_pwdWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//设置交易密码
+ (NSURLSessionTask *)jiaoyiPasswordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取星座
+ (NSURLSessionTask *)getConstellationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//修改用户信息
+ (NSURLSessionTask *)edit_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//会员中心
+ (NSURLSessionTask *)vip_centerWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//礼物收入和礼物赠送记录接口。give_type1表示礼物收入2表示赠送的礼物记录
//gift_type 1吖币礼物2背包礼物
+ (NSURLSessionTask *)home_giftSendAndHistoryParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//等级中心
+ (NSURLSessionTask *)level_centerWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//我的钱包
+ (NSURLSessionTask *)getMy_storeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//转赠记录
+ (NSURLSessionTask *)getMy_zhuanZengHistoryWithParameters:(id)parameters page:(NSInteger)page success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//转赠
+ (NSURLSessionTask *)getMy_zhuanZengWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getMy_BandingAlipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//直接绑定账户
+ (NSURLSessionTask *)getMy_BandingNewAlipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getMy_uploadAlipayMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getMy_jiechuAliBandingWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提现
+ (NSURLSessionTask *)getMy_tixianWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//实名认证
+ (NSURLSessionTask *)getMy_renzhengWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//兑换米钻
+ (NSURLSessionTask *)exchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//兑换查询
+ (NSURLSessionTask *)exchange_checkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//兑换米钻记录
+ (NSURLSessionTask *)exchange_logWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//提现记录
+ (NSURLSessionTask *)tixianRecord_logWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//充值列表
+ (NSURLSessionTask *)getIosGoodsListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获取黑名单
+ (NSURLSessionTask *)getBlackListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//移除黑名单
+ (NSURLSessionTask *)getCancel_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 1星锐,金锐等级说明2vip等级说明3平台协议
+ (NSURLSessionTask *)getNOne_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 获取官方联系方式
+ (NSURLSessionTask *)getOfficialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 提交反馈
+ (NSURLSessionTask *)getFeedbackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 苹果内购测试
+ (NSURLSessionTask *)applepayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)alipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 我的背包
+ (NSURLSessionTask *)getMy_packParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 装扮
+ (NSURLSessionTask *)dress_upWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 兑换米钻卡
+ (NSURLSessionTask *)exchange_mizuan_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//搜索列表
+ (NSURLSessionTask *)getSearhListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//清空搜索列表
+ (NSURLSessionTask *)cleanSarhListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//搜索全部
+ (NSURLSessionTask *)search_allWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//搜索
+ (NSURLSessionTask *)merge_searchWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 获取我的收益
+ (NSURLSessionTask *)getUser_incomeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 调取实名认证
+ (NSURLSessionTask *)getSfrz_startWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
// 插叙认证结果
+ (NSURLSessionTask *)getSfrz_queryWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
#pragma --- 宝箱
//宝箱信息
+ (NSURLSessionTask *)getBoxInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//宝箱说明文字
+ (NSURLSessionTask *)getRewardInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//中奖记录
+ (NSURLSessionTask *)getAwardRecordListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//积分可兑换物品列表
+ (NSURLSessionTask *)getAwardWaresListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//奖池物品列表
+ (NSURLSessionTask *)getAwardJiangChiListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//开奖
+ (NSURLSessionTask *)getAwardListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//购买钥匙
+ (NSURLSessionTask *)actionBuyKeysWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//获得钥匙所需米钻数量
+ (NSURLSessionTask *)getMizuanNumWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//积分兑换
+ (NSURLSessionTask *)actionAwardExchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
/**
param user_id 当前用户id
param target_id 动态或评论的id
param type 1点赞动态 2收藏动态3转发动态4点赞评论
param hand add点赞 del取消点赞
*/
+ (NSURLSessionTask *)getDynamics_handWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
//分享动态
+ (NSURLSessionTask *)share_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
+ (NSURLSessionTask *)getLeaderboardNewWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
/*
删除个人主页图片
*/
+ (NSURLSessionTask *)deleteImageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure;
@end

View File

@@ -0,0 +1,956 @@
//
// HttpTool.m
// miliao
//
// Created by aa on 2019/6/3.
// Copyright © 2019 miliao. All rights reserved.
//
#import "HttpTool.h"
#import "MLNetWorkHelper.h"
#import "Global.h"
@implementation HttpTool
/** */
+ (NSURLSessionTask *)getSetLoginPwdWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/Login/change_pwd") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getLoginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/login") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getCodeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/verification") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getisCodeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/is_verification") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getRegisterWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/registered") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getOtherRegisterWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/OtherRegister") parameters:parameters success:success failure:failure];
}
/** */
+ (NSURLSessionTask *)getOtherLoginWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/OtherLogin") parameters:parameters success:success failure:failure];
}
#pragma mark -
//
+ (NSURLSessionTask *)getGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gamecategory") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDanGeGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/game_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getPeiwanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/index_recommend") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRenZhengGameListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/personal_homepage") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSubMitOrderWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMyXiaDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/my_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMyJieDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/mine_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMsglistWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/getOrder") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGoToJieDanListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/accept_order") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMyOrderDetailWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/order_info") parameters:parameters success:success failure:failure];
}
#pragma mark -
//
+ (NSURLSessionTask *)getCarouseWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/carousel") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getis_popularWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/is_popular") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_recommend_categoriesWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room_recommend_categories") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getiHome_allRoomsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/roomall") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getis_topWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/is_top") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_recommend_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room_recommend_room") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSecret_chatWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/secret_chat") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getStar_loftWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/star_loft") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGet_mykeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_mykeep") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getEnter_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/enter_room") parameters:parameters success:success failure:failure];
}
#pragma mark - ROOM
//
+ (NSURLSessionTask *)getLeaderboardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/ranking") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_publicRoomListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/temproom") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getLeaderboardNewWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/demo/room_rankingb") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_rankingWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room_ranking") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoom_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room_mykeep") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRemove_myKeepWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/remove_mykeep") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMicrophone_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/microphone_status") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getUp_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/up_microphone") parameters:parameters success:success failure:failure];
}
//退
+ (NSURLSessionTask *)getGo_microphoneIfUserOffLineWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/go_microphones") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGo_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/go_microphone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getShut_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/shut_microphone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOpen_microphoneWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/open_microphone") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_other_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_other_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIs_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/is_sound") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRemove_soundWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/remove_sound") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIs_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/is_black") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancelJinYanWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/is_black_remove") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getNot_speak_statusWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/not_speak_status") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOut_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/out_room") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getReport_typeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/report_type") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSend_reportWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/send_report") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/follow_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/unfollow_user") parameters:parameters success:success failure:failure];
}
//退
+ (NSURLSessionTask *)getQuit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/quit_room") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoomUsersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/getRoomUsers") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIs_adminWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/set_room_admin") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRemove_adminWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/unset_room_admin") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSearch_userWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/search_user") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoomInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRoomBacksInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_room_background_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getEdit_roomWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/modify_room_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getNow_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/now_music") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getNext_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/next_music") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getUser_musicsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user_musics") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getLocal_musicsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/local_musics") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDel_user_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/del_user_music") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCopy_musicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/copy_music") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getEmoji_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/emoji_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGet_emojiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_emoji") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAddWaidWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/addWaid") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDelWaitWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/delWait") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGift_listWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/room/get_gift_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCleanMeiLiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/cleargiftpricecount") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getGift_queueWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gift_queue") parameters:parameters success:success failure:failure];
}
//,
+ (NSURLSessionTask *)getIsShowGoldImageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/check_gift_price") parameters:parameters success:success failure:failure];
}
//vip,
+ (NSURLSessionTask *)get_user_vipWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_vip") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_room_usersWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_room_users") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSend_baoshiWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/send_baoshi") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getsend_bykWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/send_byk") parameters:parameters success:success failure:failure];
}
//or
+ (NSURLSessionTask *)getHandle_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/handle_cp") parameters:parameters success:success failure:failure];
}
#pragma mark -
//
+ (NSURLSessionTask *)getDynamic_detailsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamic_details") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSend_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/send_dynamic") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDynamic_commentWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamic_comment") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/official_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getactiveListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/activeList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getunreadMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/unreadMessage") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getlookCommentsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/lookComments") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getmessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getTopic_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/topic_dynamic") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getTopicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/topic") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRecommended_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamicTjList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getNew_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamicNewList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getdynamicFollowListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamicFollowList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)send_dynamictWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/send_dynamic_ios") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)del_communityWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/del_community") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDelete_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/delete_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDynamic_searchWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamic_search") parameters:parameters success:success failure:failure];
}
/**
,,,
param type 12345
*/
+ (NSURLSessionTask *)getMerge_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/merge_dynamic") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDel_comments_threeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/del_comments_three") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRead_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/read_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_talk_labelsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_talk_labels") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getdynamic_detailsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamic_details") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getDynamics_handWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dynamics_hand") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)share_dynamicWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/share_dynamic") parameters:parameters success:success failure:failure];
}
////
//+ (NSURLSessionTask *)getFollowWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
//{
// return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/follow") parameters:parameters success:success failure:failure];
//}
////
//+ (NSURLSessionTask *)cancel_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
//{
// return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/cancel_follow") parameters:parameters success:success failure:failure];
//}
//
+ (NSURLSessionTask *)search_labelsWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/search_labels") parameters:parameters success:success failure:failure];
}
#pragma mark -
//
+ (NSURLSessionTask *)getUserFriendWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/userFriend") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMini_officialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/mini_official") parameters:parameters success:success failure:failure];
}
//I
+ (NSURLSessionTask *)getIs_followWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/is_follow") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getPull_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/pull_black") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getReportWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/report") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMiniOfficial_messageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/official_message") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSessionUserInfoMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/gotoinfo") parameters:parameters success:success failure:failure];
}
#pragma mak -
//
+ (NSURLSessionTask *)get_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/get_user_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)get_user_home_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user_home_page") parameters:parameters success:success failure:failure];
}
//CP
+ (NSURLSessionTask *)open_cp_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/open_cp_card") parameters:parameters success:success failure:failure];
}
//CP
+ (NSURLSessionTask *)cp_descWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/cp_desc") parameters:parameters success:success failure:failure];
}
//CP
+ (NSURLSessionTask *)remove_cpWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/remove_cp") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getVerificationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/verification") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)forget_pwdWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/forget_pwd") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)jiaoyiPasswordWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/update_paypwd") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getConstellationWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getConstellation") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)edit_user_infoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/edit_user_info") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)vip_centerWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/vip_center") parameters:parameters success:success failure:failure];
}
//give_type12
//gift_type 12
+ (NSURLSessionTask *)home_giftSendAndHistoryParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/giftloglist") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)level_centerWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/level_center") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_storeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/my_store") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_zhuanZengHistoryWithParameters:(id)parameters page:(NSInteger)page success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
NSString *str = [NSString stringWithFormat:@"%@%ld",VERSION_HTTPS_SERVER_PATH(@"api/zhengsonglog?page="),page];
return [self requestWithPostURL:str parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_zhuanZengWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/zengsong") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)getMy_BandingAlipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/ali_oauth_code") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)getMy_BandingNewAlipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/binding_zfb") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)getMy_uploadAlipayMessageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/ali_oauth_token") parameters:parameters success:success failure:failure];
}
+ (NSURLSessionTask *)getMy_jiechuAliBandingWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/UntyingAli") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_tixianWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/tixian") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_renzhengWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/bindIdentity") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/exchange") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchange_checkWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/exchange_check") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchange_logWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/exchange_log") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)tixianRecord_logWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user/get_user_give_integral_list") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getIosGoodsListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/iosGoodsList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getBlackListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/blackList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getCancel_blackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/cancel_black") parameters:parameters success:success failure:failure];
}
// 1,2vip3
+ (NSURLSessionTask *)getNOne_pageWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/one_page") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getOfficialWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/official") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getFeedbackWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/feedback") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getUser_incomeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/user_income") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSfrz_startWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/sfrz_start") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSfrz_queryWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/sfrz_query") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)applepayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/applepay") parameters:parameters success:success failure:failure];
}
//alipay
+ (NSURLSessionTask *)alipayWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/rechargePay") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMy_packParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/my_pack") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)dress_upWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/dress_up") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)exchange_mizuan_cardWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/exchange_mizuan_card") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getSearhListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/searhList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)cleanSarhListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/cleanSarhList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)search_allWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/search_all") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)merge_searchWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/player/search") parameters:parameters success:success failure:failure];
}
#pragma ---
//
+ (NSURLSessionTask *)getBoxInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getBoxInfo") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getRewardInfoWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getRewardInfo") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardRecordListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getAwardRecordList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardWaresListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getAwardWaresList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardJiangChiListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getAwardBoxList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getAwardListWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getAwardList") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)actionBuyKeysWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/actionBuyKeys") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)getMizuanNumWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/getMizuanNum") parameters:parameters success:success failure:failure];
}
//
+ (NSURLSessionTask *)actionAwardExchangeWithParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"api/actionAwardExchange") parameters:parameters success:success failure:failure];
}
/*********************************************************/
/*
MLNetworkHelper,,,
使MLNetworkHelper/,,便
, ,
,
*/
+ (NSURLSessionTask *)completCompanyUploadFileWithURL:(NSString *)URL parameters:(id)parameters name:(NSString *)name images:(NSArray<UIImage *> *)images fileNames:(NSArray<NSString *> *)fileNames imageScale:(CGFloat)imageScale imageType:(NSString *)imageType audio:(NSString *)audiofilePath progress:(MLProgress)progresssasa success:(MLRequestSuccess)success failure:(MLRequestFailure)failure
{
[MLNetWorkHelper setRequestTimeoutInterval:8.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
return [MLNetWorkHelper uploadImagesWithURL:URL parameters:parameters name:name images:images fileNames:fileNames imageScale:imageScale imageType:imageType audio:audiofilePath progress:^(NSProgress *progress) {
progresssasa(progress);
} success:^(id responseObject) {
[MLNetWorkHelper openNetworkActivityIndicator:NO];
success(responseObject);
} failure:^(NSError *error) {
[MLNetWorkHelper openNetworkActivityIndicator:NO];
failure(error);
}];
}
#pragma mark -
+ (NSURLSessionTask *)requestWithPostURL:(NSString *)URL parameters:(NSDictionary *)parameter success:(MLRequestSuccess)success failure:(MLRequestFailure)failure {
//
NSString *timestamp = [BJEncryptionTool getNowTimeTimestamp];
NSString *app_sign = [BJEncryptionTool getSignWith:timestamp];
[MLNetWorkHelper setValue:C_string(timestamp) forHTTPHeaderField:@"timestamp"];
[MLNetWorkHelper setValue:C_string(app_sign) forHTTPHeaderField:@"app-sign"];
// ,, , ....
// [MLNetWorkHelper setValue:ML_AppVersion forHTTPHeaderField:@"version"];
[MLNetWorkHelper setRequestTimeoutInterval:20.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:parameter];
if (GVUSER.token.length > 0) {
[dict setObject:GVUSER.token forKey:@"login_token"];
}
MYLog(@"---dic = %@\n---token---%@",dict,[BJUserManager userInfo].token);
//
return [MLNetWorkHelper POST:URL parameters:dict success:^(id responseObject) {
// ,, ....
[MLNetWorkHelper openNetworkActivityIndicator:NO];
success(responseObject);
} failure:^(NSError *error) {
//
[MLNetWorkHelper openNetworkActivityIndicator:NO];
// [SVProgressHUD showImage:[UIImage imageNamed:@""] status:@"网络连接错误,请稍后再试"];
failure(error);
}];
}
+ (NSURLSessionTask *)requestWithGetURL:(NSString *)URL parameters:(NSDictionary *)parameter success:(MLRequestSuccess)success failure:(MLRequestFailure)failure {
{
// ,, , ....
// [MLNetWorkHelper setValue:ML_AppVersion forHTTPHeaderField:@"version"];
[MLNetWorkHelper setRequestTimeoutInterval:8.0];
[MLNetWorkHelper openNetworkActivityIndicator:YES];
[MLNetWorkHelper openLog];
//
return [MLNetWorkHelper GET:URL parameters:parameter success:^(id responseObject) {
// ,, ....
[MLNetWorkHelper openNetworkActivityIndicator:NO];
success(responseObject);
} failure:^(NSError *error) {
//
[MLNetWorkHelper openNetworkActivityIndicator:NO];
failure(error);
}];
}
}
/*
*/
+ (NSURLSessionTask *)deleteImageParameters:(id)parameters success:(MLRequestSuccess)success failure:(MLRequestFailure)failure{
return [self requestWithPostURL:VERSION_HTTPS_SERVER_PATH(@"/api/upload/del") parameters:parameters success:success failure:failure];
}
@end

View File

@@ -0,0 +1,285 @@
//
// MLNetWorkHelper.h
// HuiBao
//
// Created by 玛丽 on 2017/11/22.
// Copyright © 2017年 玛丽. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "MLNetworkCache.h"
typedef NS_ENUM(NSUInteger, MLNetworkStatusType) {
/// 未知网络
MLNetworkStatusUnknown,
/// 无网络
MLNetworkStatusNotReachable,
/// 手机网络
MLNetworkStatusReachableViaWWAN,
/// WIFI网络
MLNetworkStatusReachableViaWiFi
};
typedef NS_ENUM(NSUInteger, MLRequestSerializer) {
/// 设置请求数据为JSON格式
MLRequestSerializerJSON,
/// 设置请求数据为二进制格式
MLRequestSerializerHTTP,
};
typedef NS_ENUM(NSUInteger, MLResponseSerializer) {
/// 设置响应数据为JSON格式
MLResponseSerializerJSON,
/// 设置响应数据为二进制格式
MLResponseSerializerHTTP,
};
/// 请求成功的Block
typedef void(^MLHttpRequestSuccess)(id responseObject);
/// 请求失败的Block
typedef void(^MLHttpRequestFailed)(NSError *error);
/// 缓存的Block
typedef void(^MLHttpRequestCache)(id responseCache);
/// 上传或者下载的进度, Progress.completedUnitCount:当前大小 - Progress.totalUnitCount:总大小
typedef void (^MLHttpProgress)(NSProgress *progress);
/// 网络状态的Block
typedef void(^MLNetworkStatus)(MLNetworkStatusType status);
@class AFHTTPSessionManager;
@interface MLNetWorkHelper : NSObject
/// 有网YES, 无网:NO
+ (BOOL)isNetwork;
/// 手机网络:YES, 反之:NO
+ (BOOL)isWWANNetwork;
/// WiFi网络:YES, 反之:NO
+ (BOOL)isWiFiNetwork;
/// 取消所有HTTP请求
+ (void)cancelAllRequest;
/// 实时获取网络状态,通过Block回调实时获取(此方法可多次调用)
+ (void)networkStatusWithBlock:(MLNetworkStatus)networkStatus;
/// 取消指定URL的HTTP请求
+ (void)cancelRequestWithURL:(NSString *)URL;
/// 开启日志打印 (Debug级别)
+ (void)openLog;
/// 关闭日志打印,默认关闭
+ (void)closeLog;
/**
* GET请求,无缓存
*
* @param URL 请求地址
* @param parameters 请求参数
* @param success 请求成功的回调
* @param failure 请求失败的回调
*
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* GET请求,自动缓存
*
* @param URL 请求地址
* @param parameters 请求参数
* @param responseCache 缓存数据的回调
* @param success 请求成功的回调
* @param failure 请求失败的回调
*
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* POST请求,无缓存
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* POST请求,自动缓存
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* 上传文件
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadFileWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
filePath:(NSString *)filePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
#pragma mark - 上传GIF
+ (NSURLSessionTask *)uploadGIFWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
gifData:(NSData *)gifData
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* 上传单/多张图片
*
* @param URL 请求地址
* @param parameters 请求参数
* @param name 图片对应服务器上的字段
* @param images 图片数组
* @param fileNames 图片文件名数组, 可以为nil, 数组内的文件名默认为当前日期时间"yyyyMMddHHmmss"
* @param imageScale 图片文件压缩比 范围 (0.f ~ 1.f)
* @param imageType 图片文件的类型,例:png、jpg(默认类型)....
* @param progress 上传进度信息
* @param success 请求成功的回调
* @param failure 请求失败的回调
*
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (__kindof NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* 上传单/多张图片
*
* @param URL 请求地址
* @param parameters 请求参数
* @param name 图片对应服务器上的字段
* @param images 图片数组
* @param fileNames 图片文件名数组, 可以为nil, 数组内的文件名默认为当前日期时间"yyyyMMddHHmmss"
* @param imageScale 图片文件压缩比 范围 (0.f ~ 1.f)
* @param imageType 图片文件的类型,例:png、jpg(默认类型)....
* @param audiofilePath 音频本地地址
* @param progress 上传进度信息
* @param success 请求成功的回调
* @param failure 请求失败的回调
*
* @return 返回的对象可取消请求,调用cancel方法
*/
+ (NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
audio:(NSString *)audiofilePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure;
/**
* 下载文件
*
* @param URL 请求地址
* @param fileDir 文件存储目录(默认存储目录为Download)
* @param progress 文件下载的进度信息
* @param success 下载成功的回调(回调参数filePath:文件的路径)
* @param failure 下载失败的回调
*
* @return 返回NSURLSessionDownloadTask实例可用于暂停继续暂停调用suspend方法开始下载调用resume方法
*/
+ (__kindof NSURLSessionTask *)downloadWithURL:(NSString *)URL
fileDir:(NSString *)fileDir
progress:(MLHttpProgress)progress
success:(void(^)(NSString *filePath))success
failure:(MLHttpRequestFailed)failure;
/*
************************************** 说明 **********************************************
*
* 在一开始设计接口的时候就想着方法接口越少越好,越简单越好,只有GET,POST,上传,下载,监测网络状态就够了.
*
* 无奈的是在实际开发中,每个APP与后台服务器的数据交互都有不同的请求格式,如果要修改请求格式,就要在此封装
* 内修改,再加上此封装在支持CocoaPods后,如果使用者pod update最新MLNetworkHelper,那又要重新修改此
* 封装内的相关参数.
*
* 依个人经验,在项目的开发中,一般都会将网络请求部分封装 2~3 层,第2层配置好网络请求工具的在本项目中的各项
* 参数,其暴露出的方法接口只需留出请求URL与参数的入口就行,第3层就是对整个项目请求API的封装,其对外暴露出的
* 的方法接口只留出请求参数的入口.这样如果以后项目要更换网络请求库或者修改请求URL,在单个文件内完成配置就好
* 了,大大降低了项目的后期维护难度
*
* 综上所述,最终还是将设置参数的接口暴露出来,如果通过CocoaPods方式使用MLNetworkHelper,在设置项目网络
* 请求参数的时候,强烈建议开发者在此基础上再封装一层,通过以下方法配置好各种参数与请求的URL,便于维护
*
************************************** 说明 **********************************************
*/
#pragma mark - 设置AFHTTPSessionManager相关属性
#pragma mark 注意: 因为全局只有一个AFHTTPSessionManager实例,所以以下设置方式全局生效
/**
在开发中,如果以下的设置方式不满足项目的需求,就调用此方法获取AFHTTPSessionManager实例进行自定义设置
(注意: 调用此方法时在要导入AFNetworking.h头文件,否则可能会报找不到AFHTTPSessionManager的❌)
@param sessionManager AFHTTPSessionManager的实例
*/
+ (void)setAFHTTPSessionManagerProperty:(void(^)(AFHTTPSessionManager *sessionManager))sessionManager;
/**
* 设置网络请求参数的格式:默认为二进制格式
*
* @param requestSerializer MLRequestSerializerJSON(JSON格式),MLRequestSerializerHTTP(二进制格式),
*/
+ (void)setRequestSerializer:(MLRequestSerializer)requestSerializer;
/**
* 设置服务器响应数据格式:默认为JSON格式
*
* @param responseSerializer MLResponseSerializerJSON(JSON格式),MLResponseSerializerHTTP(二进制格式)
*/
+ (void)setResponseSerializer:(MLResponseSerializer)responseSerializer;
/**
* 设置请求超时时间:默认为30S
*
* @param time 时长
*/
+ (void)setRequestTimeoutInterval:(NSTimeInterval)time;
/// 设置请求头
+ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
/**
* 是否打开网络状态转圈菊花:默认打开
*
* @param open YES(打开), NO(关闭)
*/
+ (void)openNetworkActivityIndicator:(BOOL)open;
/**
配置自建证书的Https请求, 参考链接: http://blog.csdn.net/syg90178aw/article/details/52839103
@param cerPath 自建Https证书的路径
@param validatesDomainName 是否需要验证域名默认为YES. 如果证书的域名与请求的域名不一致需设置为NO; 即服务器使用其他可信任机构颁发
的证书,也可以建立连接,这个非常危险, 建议打开.validatesDomainName=NO, 主要用于这种情况:客户端请求的是子域名, 而证书上的是另外
一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com, 那么mail.google.com是无法验证通过的.
*/
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName;
@end

View File

@@ -0,0 +1,529 @@
//
// MLNetWorkHelper.m
// HuiBao
//
// Created by on 2017/11/22.
// Copyright © 2017 . All rights reserved.
//
#import "MLNetWorkHelper.h"
#import "Global.h"
@implementation MLNetWorkHelper
static BOOL _isOpenLog; //
static NSMutableArray *_allSessionTask;
static AFHTTPSessionManager *_sessionManager;
#pragma mark -
+ (void)networkStatusWithBlock:(MLNetworkStatus)networkStatus {
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
networkStatus ? networkStatus(MLNetworkStatusUnknown) : nil;
if (_isOpenLog) MYLog(@"未知网络");
break;
case AFNetworkReachabilityStatusNotReachable:
networkStatus ? networkStatus(MLNetworkStatusNotReachable) : nil;
if (_isOpenLog) MYLog(@"无网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
networkStatus ? networkStatus(MLNetworkStatusReachableViaWWAN) : nil;
if (_isOpenLog) MYLog(@"手机自带网络");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
networkStatus ? networkStatus(MLNetworkStatusReachableViaWiFi) : nil;
if (_isOpenLog) MYLog(@"WIFI");
break;
}
}];
}
+ (BOOL)isNetwork {
return [AFNetworkReachabilityManager sharedManager].reachable;
}
+ (BOOL)isWWANNetwork {
return [AFNetworkReachabilityManager sharedManager].reachableViaWWAN;
}
+ (BOOL)isWiFiNetwork {
return [AFNetworkReachabilityManager sharedManager].reachableViaWiFi;
}
+ (void)openLog {
_isOpenLog = YES;
}
+ (void)closeLog {
_isOpenLog = NO;
}
+ (void)cancelAllRequest {
//
@synchronized(self) {
[[self allSessionTask] enumerateObjectsUsingBlock:^(NSURLSessionTask *_Nonnull task, NSUInteger idx, BOOL * _Nonnull stop) {
[task cancel];
}];
[[self allSessionTask] removeAllObjects];
}
}
+ (void)cancelRequestWithURL:(NSString *)URL {
if (!URL) { return; }
@synchronized (self) {
[[self allSessionTask] enumerateObjectsUsingBlock:^(NSURLSessionTask *_Nonnull task, NSUInteger idx, BOOL * _Nonnull stop) {
if ([task.currentRequest.URL.absoluteString hasPrefix:URL]) {
[task cancel];
[[self allSessionTask] removeObject:task];
*stop = YES;
}
}];
}
}
#pragma mark - GET
+ (NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
return [self GET:URL parameters:parameters responseCache:nil success:success failure:failure];
}
#pragma mark - POST
+ (NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
return [self POST:URL parameters:parameters responseCache:nil success:success failure:failure];
}
#pragma mark - GET
+ (NSURLSessionTask *)GET:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
//
responseCache!=nil ? responseCache([MLNetworkCache httpCacheForURL:URL parameters:parameters]) : nil;
// //http://zkw.org.cn/api/Login/getCode
// if ([URL isEqualToString:@"http://zkw.org.cn/api/Login/getCode"]) {
// _sessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
// _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
// }else{
// _sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
// _sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
// }
NSURLSessionTask *sessionTask = [_sessionManager GET:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {
// if ([URL isEqualToString:@"http://zkw.org.cn/api/Login/getCode"]) {
// LJLog(@"responseObject = %@",[NSString stringWithFormat:@"%@",responseObject]);
// }else{
// LJLog(@"responseObject = %@",responseObject);
// }
MYLog(@"responseObject = %@",responseObject);
}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
//
responseCache!=nil ? [MLNetworkCache setHttpCache:responseObject URL:URL parameters:parameters] : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark - POST
+ (NSURLSessionTask *)POST:(NSString *)URL
parameters:(id)parameters
responseCache:(MLHttpRequestCache)responseCache
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
//
responseCache!=nil ? responseCache([MLNetworkCache httpCacheForURL:URL parameters:parameters]) : nil;
NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {
MYLog(@"responseObject = %@",responseObject);}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
//
responseCache!=nil ? [MLNetworkCache setHttpCache:responseObject URL:URL parameters:parameters] : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark -
+ (NSURLSessionTask *)uploadFileWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
filePath:(NSString *)filePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
//
// securityPolicy.allowInvalidCertificates = YES;
//
// securityPolicy.validatesDomainName = NO;
// _sessionManager.securityPolicy = securityPolicy;
NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSError *error = nil;
[formData appendPartWithFileURL:[NSURL URLWithString:filePath] name:name error:&error];
(failure && error) ? failure(error) : nil;
} progress:^(NSProgress * _Nonnull uploadProgress) {
//
dispatch_sync(dispatch_get_main_queue(), ^{
progress ? progress(uploadProgress) : nil;
});
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {MYLog(@"responseObject = %@",responseObject);}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark - GIF
+ (NSURLSessionTask *)uploadGIFWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
gifData:(NSData *)gifData
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
// , fileNamesnil使
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *imageFileName = NSStringFormat(@"%@.gif", str);
[formData appendPartWithFileData:gifData
name:name
fileName:imageFileName
mimeType:@"gif"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {MYLog(@"responseObject = %@",responseObject);}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark -
+ (NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
//
NSString *timestamp = [BJEncryptionTool getNowTimeTimestamp];
NSString *app_sign = [BJEncryptionTool getSignWith:timestamp];
[_sessionManager.requestSerializer setValue:C_string(timestamp) forHTTPHeaderField:@"timestamp"];
[_sessionManager.requestSerializer setValue:C_string(app_sign) forHTTPHeaderField:@"app-sign"];
NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
for (NSUInteger i = 0; i < images.count; i++) {
//
NSData *imageData = UIImageJPEGRepresentation(images[i], imageScale ?: 1.f);
// , fileNamesnil使
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *imageFileName = NSStringFormat(@"%@%ld.%@",str,i,imageType?:@"jpg");
[formData appendPartWithFileData:imageData
name:name
fileName:fileNames ? NSStringFormat(@"%@.%@",fileNames[i],imageType?:@"jpg") : imageFileName
mimeType:NSStringFormat(@"image/%@",imageType ?: @"jpg")];
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
//
dispatch_sync(dispatch_get_main_queue(), ^{
progress ? progress(uploadProgress) : nil;
});
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {MYLog(@"responseObject = %@",responseObject);}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark -
+ (NSURLSessionTask *)uploadImagesWithURL:(NSString *)URL
parameters:(id)parameters
name:(NSString *)name
images:(NSArray<UIImage *> *)images
fileNames:(NSArray<NSString *> *)fileNames
imageScale:(CGFloat)imageScale
imageType:(NSString *)imageType
audio:(NSString *)audiofilePath
progress:(MLHttpProgress)progress
success:(MLHttpRequestSuccess)success
failure:(MLHttpRequestFailed)failure {
NSURLSessionTask *sessionTask = [_sessionManager POST:URL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
if (images.count > 0){
for (NSUInteger i = 0; i < images.count; i++) {
//
NSData *imageData = UIImageJPEGRepresentation(images[i], imageScale ?: 1.f);
// , fileNamesnil使
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *imageFileName = NSStringFormat(@"%@%ld.%@",str,i,imageType?:@"jpg");
[formData appendPartWithFileData:imageData
name:NSStringFormat(@"img%ld",i + 1)
fileName:fileNames ? NSStringFormat(@"%@.%@",fileNames[i],imageType?:@"jpg") : imageFileName
mimeType:NSStringFormat(@"image/%@",imageType ?: @"jpg")];
}
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
//
dispatch_sync(dispatch_get_main_queue(), ^{
progress ? progress(uploadProgress) : nil;
});
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (_isOpenLog) {MYLog(@"responseObject = %@",responseObject);}
[[self allSessionTask] removeObject:task];
success ? success(responseObject) : nil;
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (_isOpenLog) {MYLog(@"error = %@",error);}
[[self allSessionTask] removeObject:task];
failure ? failure(error) : nil;
}];
// sessionTask
sessionTask ? [[self allSessionTask] addObject:sessionTask] : nil ;
return sessionTask;
}
#pragma mark -
+ (NSURLSessionTask *)downloadWithURL:(NSString *)URL
fileDir:(NSString *)fileDir
progress:(MLHttpProgress)progress
success:(void(^)(NSString *))success
failure:(MLHttpRequestFailed)failure {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URL]];
__block NSURLSessionDownloadTask *downloadTask = [_sessionManager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
//
dispatch_sync(dispatch_get_main_queue(), ^{
progress ? progress(downloadProgress) : nil;
});
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
//
NSString *downloadDir = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:fileDir ? fileDir : @"Download"];
//
NSFileManager *fileManager = [NSFileManager defaultManager];
//Download
[fileManager createDirectoryAtPath:downloadDir withIntermediateDirectories:YES attributes:nil error:nil];
//
NSString *filePath = [downloadDir stringByAppendingPathComponent:response.suggestedFilename];
//URL
return [NSURL fileURLWithPath:filePath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
[[self allSessionTask] removeObject:downloadTask];
if(failure && error) {failure(error) ; return ;};
success ? success(filePath.absoluteString /** NSURL->NSString*/) : nil;
}];
//
[downloadTask resume];
// sessionTask
downloadTask ? [[self allSessionTask] addObject:downloadTask] : nil ;
return downloadTask;
}
/**
task
*/
+ (NSMutableArray *)allSessionTask {
if (!_allSessionTask) {
_allSessionTask = [[NSMutableArray alloc] init];
}
return _allSessionTask;
}
#pragma mark - AFHTTPSessionManager
/**
*/
+ (void)load {
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
}
/**
* HTTPAFHTTPSessionManager
* :http://www.jianshu.com/p/5969bbb4af9f
*/
+ (void)initialize {
_sessionManager = [AFHTTPSessionManager manager];
_sessionManager.requestSerializer.timeoutInterval = 30.f;
// _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
// _sessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];
// _sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer];
_sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/json", @"text/plain", @"text/javascript", @"text/xml", @"image/*", nil];
//
// [AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
}
#pragma mark - AFHTTPSessionManager
+ (void)setAFHTTPSessionManagerProperty:(void (^)(AFHTTPSessionManager *))sessionManager {
sessionManager ? sessionManager(_sessionManager) : nil;
}
+ (void)setRequestSerializer:(MLRequestSerializer)requestSerializer {
_sessionManager.requestSerializer = requestSerializer==MLRequestSerializerHTTP ? [AFHTTPRequestSerializer serializer] : [AFJSONRequestSerializer serializer];
}
+ (void)setResponseSerializer:(MLResponseSerializer)responseSerializer {
_sessionManager.responseSerializer = responseSerializer==MLResponseSerializerHTTP ? [AFHTTPResponseSerializer serializer] : [AFJSONResponseSerializer serializer];
}
+ (void)setRequestTimeoutInterval:(NSTimeInterval)time {
_sessionManager.requestSerializer.timeoutInterval = time;
}
+ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field {
[_sessionManager.requestSerializer setValue:value forHTTPHeaderField:field];
}
+ (void)openNetworkActivityIndicator:(BOOL)open {
// [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:open];
}
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName {
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
// 使
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// ()YES
securityPolicy.allowInvalidCertificates = YES;
// YES;
securityPolicy.validatesDomainName = validatesDomainName;
securityPolicy.pinnedCertificates = [[NSSet alloc] initWithObjects:cerData, nil];
[_sessionManager setSecurityPolicy:securityPolicy];
}
@end
#pragma mark - NSDictionary,NSArray
/*
************************************************************************************
*NSDictionaryNSArray, json
************************************************************************************
*/
#ifdef DEBUG
@implementation NSArray (ML)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *strM = [NSMutableString stringWithString:@"(\n"];
[self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[strM appendFormat:@"\t%@,\n", obj];
}];
[strM appendString:@")"];
return strM;
}
@end
@implementation NSDictionary (ML)
- (NSString *)descriptionWithLocale:(id)locale {
NSMutableString *strM = [NSMutableString stringWithString:@"{\n"];
[self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[strM appendFormat:@"\t%@ = %@;\n", key, obj];
}];
[strM appendString:@"}\n"];
return strM;
}
@end
#endif

View File

@@ -0,0 +1,42 @@
//
// MLNetworkCache.h
// HuiBao
//
// Created by 玛丽 on 2017/11/22.
// Copyright © 2017年 玛丽. All rights reserved.
//
#import <Foundation/Foundation.h>
// 过期提醒
#define PPDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
#pragma mark - 网络数据缓存类
@interface MLNetworkCache : NSObject
/**
* 异步缓存网络数据,根据请求的 URL与parameters
* 做KEY存储数据, 这样就能缓存多级页面的数据
*
* @param httpData 服务器返回的数据
* @param URL 请求的URL地址
* @param parameters 请求的参数
*/
+ (void)setHttpCache:(id)httpData URL:(NSString *)URL parameters:(id)parameters;
/**
* 根据请求的 URL与parameters 同步取出缓存数据
*
* @param URL 请求的URL
* @param parameters 请求的参数
*
* @return 缓存的服务器数据
*/
+ (id)httpCacheForURL:(NSString *)URL parameters:(id)parameters;
/// 获取网络缓存的总大小 bytes(字节)
+ (NSInteger)getAllHttpCacheSize;
/// 删除所有网络缓存
+ (void)removeAllHttpCache;
@end

View File

@@ -0,0 +1,51 @@
//
// MLNetworkCache.m
// HuiBao
//
// Created by on 2017/11/22.
// Copyright © 2017 . All rights reserved.
//
#import "MLNetworkCache.h"
#import <YYCache.h>
static NSString *const kMLNetworkResponseCache = @"kMLNetworkResponseCache";
@implementation MLNetworkCache
static YYCache *_dataCache;
+ (void)initialize {
_dataCache = [YYCache cacheWithName:kMLNetworkResponseCache];
}
+ (void)setHttpCache:(id)httpData URL:(NSString *)URL parameters:(NSDictionary *)parameters {
NSString *cacheKey = [self cacheKeyWithURL:URL parameters:parameters];
//,线
[_dataCache setObject:httpData forKey:cacheKey withBlock:nil];
}
+ (id)httpCacheForURL:(NSString *)URL parameters:(NSDictionary *)parameters {
NSString *cacheKey = [self cacheKeyWithURL:URL parameters:parameters];
return [_dataCache objectForKey:cacheKey];
}
+ (NSInteger)getAllHttpCacheSize {
return [_dataCache.diskCache totalCost];
}
+ (void)removeAllHttpCache {
[_dataCache.diskCache removeAllObjects];
}
+ (NSString *)cacheKeyWithURL:(NSString *)URL parameters:(NSDictionary *)parameters {
if(!parameters || parameters.count == 0){return URL;};
//
NSData *stringData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSString *paraString = [[NSString alloc] initWithData:stringData encoding:NSUTF8StringEncoding];
return [NSString stringWithFormat:@"%@%@",URL,paraString];
}
@end

View File

@@ -0,0 +1,78 @@
//
// UserManager.h
// MoHuanXingYu
//
// Created by aa on 2019/6/12.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface BJUserInfo : NSObject
/*用户token*/
@property(nonatomic, copy) NSString *login_token;
/*用户头像*/
@property(nonatomic, copy) NSString *head_pic;
/*用户昵称*/
@property(nonatomic, copy) NSString *nick_name;
/*用户token*/
@property(nonatomic, copy) NSString *uid;
/*用户user_name手机号*/
@property(nonatomic, copy) NSString *user_name;
/*TXIM user_sig*/
@property(nonatomic, copy) NSString *user_sig;
@property(nonatomic, copy) NSString *guild_id;
/***********下面方法暂时废弃**********/
//@property (nonatomic,copy)NSString *userid;//用户id
@property (nonatomic,copy)NSString *headimgurl;//头像
@property (nonatomic,copy)NSString *phone;//手机号
@property (nonatomic,copy)NSString *username;//用户名
@property (nonatomic,copy)NSString *nickname;//用户昵称
@property (nonatomic,copy)NSString *token;//用户token
//@property (nonatomic,copy)NSString *birthday;//生日
@property (nonatomic,copy)NSString *openid;//
@property (nonatomic,copy)NSString *ry_token;//
@property (nonatomic,copy)NSString *ry_uid;//
@property (nonatomic,copy)NSString *sex;//性别
@end
@interface BJUserManager : NSObject
/// 刷新并存储用户信息
/// @param finishBlock 回调
+ (void)bj_refreshUserInfo:(void(^)(BOOL isOk))finishBlock;
/**
存储用户信息
@param dic 服务器获取来的用户信息字典
@return 存储结果
*/
+ (BOOL)saveUserInfo:(NSDictionary *)dic;
/**
取用户信息
@return 返回用户信息模型
*/
+ (BJUserInfo *)userInfo;
/**
清空用户信息
@return 清空结果
*/
+ (BOOL)clearUserInfo;
@end

View File

@@ -0,0 +1,91 @@
//
// UserManager.m
// MoHuanXingYu
//
// Created by aa on 2019/6/12.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "BJUserManager.h"
@implementation BJUserInfo
- (NSString *)login_token {
return C_string(GVUSER.token);
}
@end
@implementation BJUserManager
+ (void)onUpdatePhoneHistory:(NSString *)head_pic user_name:(NSString *)user_name {
if (user_name.length <= 0) {
return;
}
NSArray *arr = [[NSUserDefaults standardUserDefaults] objectForKey:Login_Phone_History];
NSMutableArray *mArr = [[NSMutableArray alloc] initWithArray:arr];
NSInteger index = -1;
for (NSInteger i = 0; i < mArr.count; i++) {
NSDictionary *dict = mArr[i];
if ([user_name isEqualToString:dict[@"user_name"]]) {
index = i;
}
}
NSDictionary *dict = @{@"head_pic":head_pic, @"user_name":user_name};
if (index == -1) {
[mArr insertObject:dict atIndex:0];
}else {
mArr[index] = dict;
}
[[NSUserDefaults standardUserDefaults] setObject:[mArr copy] forKey:Login_Phone_History];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (void)bj_refreshUserInfo:(void(^)(BOOL isOk))finishBlock {
[RCMicHTTP postWithURLString:@"/api/user/get_user_info" parameters:nil response:^(RCMicHTTPResult *result) {
if (result.success) {
if (result.errorCode == 200 && [result.content isKindOfClass:NSDictionary.class]) {
[BJUserManager saveUserInfo:result.content];
finishBlock? finishBlock(YES) : nil;
}else {
finishBlock? finishBlock(NO) : nil;
// [SVProgressHUD showInfoWithStatus:result.message];
}
}else {
finishBlock? finishBlock(NO) : nil;
// [SVProgressHUD showInfoWithStatus:@"网络错误"];
}
}];
}
+ (BOOL)saveUserInfo:(NSDictionary *)dic {
GVUSER.rawUserDict = dic;
NSString *loginToken = [dic safeStringForKey:@"login_token"];
if (loginToken.length > 0) {
GVUSER.token = loginToken;
}
[BJUserManager onUpdatePhoneHistory:[dic safeStringForKey:@"head_pic"] user_name:[dic safeStringForKey:@"user_name"]];
return YES;
}
+ (BJUserInfo *)userInfo {
NSDictionary *data = GVUSER.rawUserDict;
if ([data isKindOfClass:NSDictionary.class] && data.allKeys.count>0) {
BJUserInfo *model = [BJUserInfo mj_objectWithKeyValues:data];
return model;
}
return nil;
}
+ (BOOL)clearUserInfo
{
GVUSER.rawUserDict = @{};
GVUSER.token = @"";
return YES;
}
@end

View File

@@ -0,0 +1,121 @@
//
// MLRoomInformationModel.h
// MoHuanXingYu
//
// Created by aa on 2019/6/14.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface MLRoomInformationModel : NSObject
//房间ID
@property(nonatomic, copy) NSString *rid;
//房间号
@property(nonatomic, copy) NSString *room_number;
//房间名字
@property(nonatomic, copy) NSString *room_name;
//房间封面
@property(nonatomic, copy) NSString *room_cover;
//厅主ID
@property(nonatomic, copy) NSString *room_owner_uid;
//房间公告
@property(nonatomic, copy) NSString *room_intro;
//房间是否在线
@property(nonatomic, copy) NSString *is_online;
//游客数量
@property(nonatomic, copy) NSString *visitor_num;
//直播间背景图片
@property(nonatomic, copy) NSString *room_background_image;
//是否收藏了该直播间1收藏2未收藏
@property(nonatomic, copy) NSString *is_collect;
//厅主魅力值
@property(nonatomic, copy) NSString *room_owner_meili;
//欢迎语,系统通知
@property(nonatomic, copy) NSString *room_welcome;
//身份1房主2管理员其他普通用户
@property(nonatomic, copy) NSString *identity;
/*是否显示转盘*/
@property(nonatomic, strong) NSString *box_off;
/*房主信息*/
@property(nonatomic, strong) NSDictionary *room_owner_info;
/*-----------------下面属性废弃----------------*/
@property (nonatomic, strong) NSString *openid;
@property (nonatomic, strong) NSString *uid;
@property (nonatomic, strong) NSString *room_type;
@property (nonatomic, strong) NSString *week_star;
@property (nonatomic, strong) NSString *ranking;
@property (nonatomic, strong) NSString *freshTime;
@property (nonatomic, strong) NSString *numid;
@property (nonatomic, strong) NSString *updated_at;
@property (nonatomic, strong) NSString *sex;
@property (nonatomic, strong) NSString *nickname;
@property(nonatomic, copy) NSString *bright_num;//靓号,为空不是靓号
@property(nonatomic, copy) NSString *room_people;//房间在线人数
@property(nonatomic, copy) NSString *send_gift_price;//判断是否显示金蛋或宝箱1显示0不显示
@property (nonatomic, strong) NSString *room_status;
@property (nonatomic, strong) NSString *roomBlack;
@property (nonatomic, strong) NSString *secret_chat;
@property (nonatomic, strong) NSString *roomAdmin;
@property (nonatomic, strong) NSString *is_top;
//进入房间的用户的身份判断
//1房主 4评委 2管理员 5一般用户
@property (nonatomic, strong) NSString *user_type;
@property (nonatomic, strong) NSString *room_background;
@property (nonatomic, strong) NSString *created_at;
@property (nonatomic, strong) NSString *room_pass;
@property (nonatomic, strong) NSString *is_popular;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) NSString *giftPrice;
@property (nonatomic, strong) NSString *headimgurl;
@property (nonatomic, strong) NSString *is_mykeep;//1: 已收藏 2为收藏
@property (nonatomic, strong) NSString *is_sound;
@property (nonatomic, strong) NSString *is_speak;
@property (nonatomic, strong) NSString *uid_sound;
@property (nonatomic, strong) NSString *uid_black;
@property (nonatomic, assign) BOOL isBanned;
@property (nonatomic, strong) NSString *is_afk;
@property (nonatomic, strong) NSString *back_img;
@property (nonatomic, strong) NSString *hot;
@property (nonatomic, strong) NSString *mic_color;
@property (nonatomic, strong) NSString *txk;
@property(nonatomic, copy) NSString *meili;//新增主播魅力值
+(instancetype)currentAccount;
@end
@interface MLRoomInformationManager : NSObject
/**
存储用户信息
@param dic 服务器获取来的用户信息字典
@return <#return value description#>
*/
+ (BOOL)saveUserInfo:(MLRoomInformationModel *)dic;
/**
取用户信息
@return 返回用户信息模型
*/
+ (MLRoomInformationModel *)userInfo;
/**
清空用户信息
@return <#return value description#>
*/
+ (BOOL)clearUserInfo;
@end

View File

@@ -0,0 +1,97 @@
//
// MLRoomInformationModel.m
// MoHuanXingYu
//
// Created by aa on 2019/6/14.
// Copyright © 2019 MoHuanXingYu. All rights reserved.
//
#import "MLRoomInformationModel.h"
#import <MJExtension.h>
@implementation MLRoomInformationModel
+(instancetype)currentAccount{
static MLRoomInformationModel *account;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (!account) {
account = [[MLRoomInformationModel alloc] init];
account.isBanned = YES;
}
});
return account;
}
@end
@implementation MLRoomInformationManager
+ (BOOL)saveUserInfo:(MLRoomInformationModel *)dic
{
return [NSKeyedArchiver archiveRootObject:[dic mj_keyValues] toFile:[self path]];
}
+ (MLRoomInformationModel *)userInfo
{
id data = [NSKeyedUnarchiver unarchiveObjectWithFile:[self path]];
MLRoomInformationModel *model = [MLRoomInformationModel mj_objectWithKeyValues:data];
model.isBanned = YES;
return model;
}
+ (BOOL)clearUserInfo
{
NSFileManager *defaultManager = [NSFileManager defaultManager];
if ([defaultManager isDeletableFileAtPath:[self path]])
{
//
return [defaultManager removeItemAtPath:[self path] error:nil];
}
else
{
return NO;
}
}
/**
Documents/ ()iTunes
Library,CachesiTunes.
Library/Caches: 使()iTunes
Library/Preferences: NSUserDefaultsplistiTunes
@return <#return value description#>
*/
+(NSString *)path
{
//
// NSString *homeDir = NSHomeDirectory();
// // Documents
// NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) firstObject];
// //Library
// NSString *libDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) lastObject];
// // cache
// NSString *cachesDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];
// // tmp
NSString *tmpDir = NSTemporaryDirectory();
// //
// NSString *bundle = [[NSBundle mainBundle] bundlePath];
NSString *name = @"MLRoomInformationModel";
NSString *type = @"sql";
NSString *allName = [NSString stringWithFormat:@"%@.%@",name,type];
return [tmpDir stringByAppendingPathComponent:allName];;
}
@end

View File

@@ -0,0 +1,61 @@
//
// CustomNavigationView.h
// LefenStore1.0
//
// Created by LGY on 2017/10/19.
// Copyright © 2017年 lefen58.com. All rights reserved.
//
#import <UIKit/UIKit.h>
/*
* 默认色值 333333
* 默认显示 返回按钮 titile文字
* 默认时间 返回
*/
@interface CustomNavigationView : UIView
@property (strong, nonatomic) UIImageView *bgImg;
@property (strong, nonatomic) UIView *cusNavView; //h: 44
@property (strong, nonatomic) UIView *btmLine;
/// 返回:左边第一个按钮
@property (strong, nonatomic) UIButton *left0Btn;
/// 左边第二个按钮
@property (strong, nonatomic) UIButton *left1Btn;
@property (strong, nonatomic) UIImageView *titleImg;
@property (strong, nonatomic) UILabel *titleLab;
@property (strong, nonatomic) UIButton *right1Btn;
@property (strong, nonatomic) UIButton *right0Btn;
@property (strong, nonatomic) UIButton *rightTitleBtn;
@property (copy, nonatomic) void (^handleBackBlock)(void);
@property (copy, nonatomic) void (^handleGuanBiBlock)(void);
@property (copy, nonatomic) void (^handleRight0Block)(void);
@property (copy, nonatomic) void (^handleRight1Block)(void);
@property (copy, nonatomic) void (^handleRightTitleBlock)(void);
- (void)cus_setNavTitle:(NSString *)title;
- (void)cus_setNavBackgroundColor:(UIColor *)color;
- (void)cus_setNavBackgroundImage:(UIImage *)image;
- (void)cus_setNavTintColor:(UIColor *)color;
- (void)cus_setNavTitleColor:(UIColor *)color;
// 0 返回按钮 1 返回和更多按钮 2 返回+特殊+更多按钮 3返回+文字按钮 4全部隐藏
- (void)cus_setNavShow:(NSInteger)type;
/// 导航栏变透明,适合有头图的
- (void)styleClear;
/// 白色的返回按钮
- (void)styleBackWhite;
@end

View File

@@ -0,0 +1,302 @@
//
// CustomNavigationView.m
// LefenStore1.0
//
// Created by LGY on 2017/10/19.
// Copyright © 2017 lefen58.com. All rights reserved.
//
#define LineColor COLOR16(0xe7e7e7)
#define NavFontColor COLOR16(0x333333)
#import "CustomNavigationView.h"
@implementation CustomNavigationView
#pragma mark -- init
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initView];
}
return self;
}
- (void)initView
{
__weak typeof(self) weakSelf = self;
self.backgroundColor = [UIColor whiteColor];
[self.cusNavView addSubview:self.left0Btn];
[self.cusNavView addSubview:self.left1Btn];
[self.cusNavView addSubview:self.titleImg];
[self.cusNavView addSubview:self.titleLab];
[self.cusNavView addSubview:self.right1Btn];
[self.cusNavView addSubview:self.right0Btn];
[self.cusNavView addSubview:self.rightTitleBtn];
[self addSubview:self.bgImg];
[self addSubview:self.cusNavView];
[self addSubview:self.btmLine];
[self.titleImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(weakSelf.cusNavView.mas_centerX);
make.centerY.equalTo(weakSelf.cusNavView.mas_centerY);
}];
[self.rightTitleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(weakSelf.cusNavView.mas_right).offset(-20);
make.centerY.equalTo(weakSelf.cusNavView.mas_centerY);
make.height.mas_equalTo(44);
}];
}
#pragma mark -- handleAction
- (void)cus_setNavTitle:(NSString *)title
{
if (title) {
self.titleLab.text = title;
}
}
- (void)cus_setNavBackgroundColor:(UIColor *)color
{
self.backgroundColor = color;
}
- (void)cus_setNavBackgroundImage:(UIImage *)image
{
if (image) {
self.bgImg.image = image;
}
}
- (void)cus_setNavTintColor:(UIColor *)color
{
if (color) {
self.left0Btn.tintColor = color;
self.left1Btn.tintColor = color;
self.right1Btn.tintColor = color;
self.right0Btn.tintColor = color;
self.rightTitleBtn.tintColor = color;
}
}
- (void)cus_setNavTitleColor:(UIColor *)color
{
if (color) {
self.titleLab.textColor = color;
}
}
// 0 1 2 ++ 3+ 4
- (void)cus_setNavShow:(NSInteger)type
{
self.left0Btn.hidden = YES;
self.left1Btn.hidden = YES;
self.right0Btn.hidden = YES;
self.right1Btn.hidden = YES;
self.rightTitleBtn.hidden = YES;
switch (type) {
case 0: {
self.left0Btn.hidden = NO;
}
break;
case 1: {
self.left0Btn.hidden = NO;
self.right0Btn.hidden = NO;
}
break;
case 2: {
self.left0Btn.hidden = NO;
self.right0Btn.hidden = NO;
self.right1Btn.hidden = NO;
}
break;
case 3: {
self.left0Btn.hidden = NO;
self.rightTitleBtn.hidden = NO;
}
break;
default:
break;
}
}
- (void)handleBack:(id)sender
{
if (self.handleBackBlock) {
self.handleBackBlock();
} else {
if (self.viewController.navigationController) {
[self.viewController.navigationController popViewControllerAnimated:YES];
} else {
[self.viewController dismissViewControllerAnimated:YES completion:nil];
}
}
}
- (void)handleGuanbi:(id)sender
{
if (self.handleGuanBiBlock) {
self.handleGuanBiBlock();
}
}
- (void)handleRight0Btn:(id)sender
{
if (self.handleRight0Block) {
self.handleRight0Block();
}
}
- (void)handleRightBtn1:(id)sender
{
if (self.handleRight1Block) {
self.handleRight1Block();
}
}
- (void)handleRightTitleBtn:(id)sender
{
if (self.handleRightTitleBlock) {
self.handleRightTitleBlock();
}
}
#pragma mark -- lazyLoad
- (UIImageView *)bgImg
{
if (!_bgImg) {
_bgImg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, APPW, yb_NavigationBar_H)];
_bgImg.contentMode = UIViewContentModeScaleAspectFill;
_bgImg.layer.masksToBounds = YES;
}
return _bgImg;
}
- (UIView *)cusNavView
{
if (!_cusNavView) {
_cusNavView = [[UIView alloc] initWithFrame:CGRectMake(0, yb_StatusBar_H, APPW, 44)];
}
return _cusNavView;
}
- (UIView *)btmLine
{
if (!_btmLine) {
_btmLine = [[UIView alloc] initWithFrame:CGRectMake(0, yb_StatusBar_H + 43.5, APPW, 0.5)];
_btmLine.backgroundColor = LineColor;
_btmLine.hidden = NO;
}
return _btmLine;
}
- (UIButton *)left0Btn
{
if (!_left0Btn) {
_left0Btn = [UIButton buttonWithType:UIButtonTypeCustom];
_left0Btn.frame = CGRectMake(0, 0, 44, 44);
_left0Btn.contentMode = UIViewContentModeScaleAspectFit;
_left0Btn.titleLabel.font = [UIFont systemFontOfSize:14];
_left0Btn.titleLabel.textColor = NavFontColor;
_left0Btn.tintColor = NavFontColor;
[_left0Btn setImage:[UIImage imageNamed:@"blackBack"] forState:UIControlStateNormal];
[_left0Btn addTarget:self action:@selector(handleBack:) forControlEvents:UIControlEventTouchUpInside];
}
return _left0Btn;
}
- (UIButton *)left1Btn
{
if (!_left1Btn) {
_left1Btn = [UIButton buttonWithType:UIButtonTypeSystem];
_left1Btn.frame = CGRectMake(44, 0, 44, 44);
_left1Btn.contentMode = UIViewContentModeScaleAspectFit;
_left1Btn.titleLabel.font = [UIFont systemFontOfSize:14];
_left1Btn.titleLabel.textColor = NavFontColor;
_left1Btn.tintColor = NavFontColor;
[_left1Btn setTitle:@"关闭" forState:UIControlStateNormal];
[_left1Btn addTarget:self action:@selector(handleGuanbi:) forControlEvents:UIControlEventTouchUpInside];
_left1Btn.hidden = YES;
}
return _left1Btn;
}
- (UIImageView *)titleImg
{
if (!_titleImg) {
_titleImg = [[UIImageView alloc] init];
_titleImg.contentMode = UIViewContentModeScaleAspectFit;
_titleImg.layer.masksToBounds = YES;
_titleImg.hidden = YES;
[_titleImg sizeToFit];
}
return _titleImg;
}
- (UILabel *)titleLab
{
if (!_titleLab) {
_titleLab = [[UILabel alloc] initWithFrame:CGRectMake(88, 0, APPW - 176, 44)];
_titleLab.textColor = NavFontColor;
_titleLab.font = [UIFont systemFontOfSize:18 weight:0.3];
_titleLab.textAlignment = NSTextAlignmentCenter;
}
return _titleLab;
}
- (UIButton *)right0Btn
{
if (!_right0Btn) {
_right0Btn = [UIButton buttonWithType:UIButtonTypeCustom];
_right0Btn.frame = CGRectMake(APPW - 44, 0, 44, 44);
_right0Btn.contentMode = UIViewContentModeScaleAspectFit;
_right0Btn.titleLabel.font = [UIFont systemFontOfSize:14];
_right0Btn.titleLabel.textColor = NavFontColor;
_right0Btn.tintColor = NavFontColor;
[_right0Btn setImage:[UIImage imageNamed:@"navMore"] forState:UIControlStateNormal];
[_right0Btn addTarget:self action:@selector(handleRight0Btn:) forControlEvents:UIControlEventTouchUpInside];
_right0Btn.hidden = YES;
}
return _right0Btn;
}
- (UIButton *)right1Btn
{
if (!_right1Btn) {
_right1Btn = [UIButton buttonWithType:UIButtonTypeCustom];
_right1Btn.frame = CGRectMake(APPW - 88, 0, 44, 44);
_right1Btn.contentMode = UIViewContentModeScaleAspectFit;
_right1Btn.titleLabel.font = [UIFont systemFontOfSize:14];
_right1Btn.titleLabel.textColor = NavFontColor;
_right1Btn.tintColor = NavFontColor;
[_right1Btn setImage:[UIImage imageNamed:@"special"] forState:UIControlStateNormal];
[_right1Btn addTarget:self action:@selector(handleRightBtn1:) forControlEvents:UIControlEventTouchUpInside];
_right1Btn.hidden = YES;
}
return _right1Btn;
}
- (UIButton *)rightTitleBtn
{
if (!_rightTitleBtn) {
_rightTitleBtn = [UIButton buttonWithType:UIButtonTypeCustom];
_rightTitleBtn.contentMode = UIViewContentModeScaleAspectFit;
_rightTitleBtn.titleLabel.font = [UIFont systemFontOfSize:14];
[_rightTitleBtn setTitleColor:HEXCOLOR(0x666666) forState:UIControlStateNormal];
[_rightTitleBtn addTarget:self action:@selector(handleRightTitleBtn:) forControlEvents:UIControlEventTouchUpInside];
_rightTitleBtn.hidden = YES;
[_rightTitleBtn sizeToFit];
}
return _rightTitleBtn;
}
- (void)styleClear {
self.backgroundColor = UIColor.clearColor;
self.btmLine.hidden = YES;
}
- (void)styleBackWhite {
[self.left0Btn setImage:[UIImage imageNamed:@"BM_Tools_White_arrow_left"] forState:UIControlStateNormal];
self.titleLab.textColor = UIColor.whiteColor;
}
@end

View File

@@ -0,0 +1,229 @@
//
// FZYControl.h
//
// Created by 范智渊 on 2016/8/27.
// Copyright © 2018年 范智渊. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface FZYControl : NSObject
#pragma mark --创建Label
+(UILabel*)createLabelWithFrame:(CGRect)frame Font:(UIFont *)font Text:(NSString*)text;
+ (UILabel *)createLabelWithFrame:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text color:(UIColor *)color;
///更新方法 9月17号新增 修改font 传入类型
+ (UILabel *)createLabelWithframe:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text color:(UIColor *)color;
+(UILabel*)createLabelWithFrame:(CGRect)frame Font:(UIFont*)font Text:(NSString*)text color:(UIColor*)color textAlignment:(NSTextAlignment)alignment;
+(UILabel*)createLabelWithFrame:(CGRect)frame Font:(UIFont*)font Text:(NSString*)text color:(UIColor*)color textAlignment:(NSTextAlignment)alignment backgroundColor:(UIColor *)backgroundColor;
+(UILabel *)createLabelWithFrame:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text color:(UIColor *)color textAlignment:(NSTextAlignment)alignment numberOfLines:(NSInteger)numberOfLines tag:(NSInteger)tag;
#pragma mark --创建View
+(UIView*)viewWithFrame:(CGRect)frame;
+(UIView*)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color;
+(UIView*)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color borderColor:(CGColorRef )borderColor borderWidth:(CGFloat)borderWidth ;
+(UIView*)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color viewTagValue:(NSInteger)tag;
#pragma mark --创建imageView
+(UIImageView*)createImageViewWithFrame:(CGRect)frame ImageName:(NSString*)imageName;
+(UIImageView*)createImageViewWithFrame:(CGRect)frame ImageName:(NSString*)imageName contentMode:(UIViewContentMode)contentMode;
+(UIImageView*)createImageViewWithFrame:(CGRect)frame ImageName:(NSString*)imageName imageTagValue:(NSInteger)tag;
#pragma mark --创建button
/** imageName selected action title selectedTitle titleColor selectedColor font backgroudColor*/
+(UIButton*)createButtonWithFrame:(CGRect)frame
ImageName:(NSString*)imageName
selectedImage:(NSString *)selected
Title:(NSString*)title
selectedTitle:(NSString *)selectedTitle
titleColor:(UIColor *)color
selectedTitleColor:(UIColor *)selectedColor
Target:(id)target
Action:(SEL)action
titleFont:(UIFont *)font
backgroundColor:(UIColor *)bgColor
tag:(NSInteger)tag;
+(UIButton*)createButtonWithFrame:(CGRect)frame
backgroundImageName:(NSString*)imageName
selectedImage:(NSString *)selected
Target:(id)target
Action:(SEL)action
Title:(NSString*)title
tag:(NSInteger)tag;
/** action title titleColor font backgroudColor*/
+(UIButton*)createButtonWithFrame:(CGRect)frame
Target:(id)target
Action:(SEL)action
Title:(NSString*)title
titlColor:(UIColor *)color
font:(UIFont *)textFont
tag:(NSInteger)tag
backgroundColor:(UIColor *)backgroudColor;
/** action title imageName font */
+(UIButton*)createButtonWithFrame:(CGRect)frame
ImageName:(NSString*)imageName
Target:(id)target
Action:(SEL)action
font:(UIFont *)font
Title:(NSString*)title;
/** action title imageName selected font */
+(UIButton*)createButtonWithFrame:(CGRect)frame
ImageName:(NSString*)imageName
selectedImage:(NSString *)selected
Target:(id)target
Action:(SEL)action
Title:(NSString*)title
tag:(NSInteger)tag;
/** title imageName selected font action backgorudColor borderColor borderWidth*/
+(UIButton *)createButtonWithFrame:(CGRect)frame
buttonTitleFont:(UIFont *)font
buttonTitle:(NSString *)title
buttonTitleColor:(UIColor *)titleColor
backgorudColor:(UIColor *)backgorudColor
borderColor:(CGColorRef)borderColor
borderWidth:(CGFloat)borderWidth
action:(SEL)action
target:(id)target;
+(UIButton *)createButtonWithFrame:(CGRect)frame;
+(UIButton *)createButtonWithFrame:(CGRect)frame
buttonImage:(NSString *)imageName;
+(UIButton *)createButtonWithFrame:(CGRect)frame buttonTitleFont:(UIFont *)buttonTitleFont buttonTitle:(NSString *)buttonTitle;
///9月17日 新增
+(UIButton *)createButtonWithFrame:(CGRect)frame
buttonType:(UIButtonType)type
buttonImage:(NSString *)imageName
Target:(id)target
Action:(SEL)action;
#pragma mark ----- 创建tableView -----
+(UITableView *)createTableViewWithFrame:(CGRect)frame
style:(UITableViewStyle)style
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate;
+(UITableView *)createTableViewWithFrame:(CGRect)frame style:(UITableViewStyle)style
backgroudColor:(UIColor *)backgroudColor
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate;
+(UITableView *)createTableViewWithFrame:(CGRect)frame
style:(UITableViewStyle)style
backgroudColor:(UIColor *)backgroudColor
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate
separatorStyle:(UITableViewCellSeparatorStyle)separatorStyle;
//**
// * 处理 cell上 textfield或者 textView键盘弹出问题
// *
// * @param frame
// * @param style
// * @param backgroudColor
// * @param dataSource
// * @param delegate
// * @param separatorStyle
// *
// * @return
// */
#pragma mark ----- 创建UICollectionView -----
//+(UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
// collectionViewLayout:(UICollectionViewLayout *)layout
// dataSource:(id<UICollectionViewDataSource>)dataSource
// delegate:(id<UICollectionViewDelegate>)delegate ;
//
//+(UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
// collectionViewLayout:(UICollectionViewLayout *)layout
// dataSource:(id<UICollectionViewDataSource>)dataSource
// delegate:(id<UICollectionViewDelegate>)delegate
// backgroudColor:(UIColor *)backgroudColor;
+(UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
itmeSize:(CGSize)itmeSize
sectionInset:(UIEdgeInsets)sectionInset
minimumLineSpacing:(CGFloat)minimumLineSpacing
minimumInteritemSpacing:(CGFloat)minimumInteritemSpacing
scrollDirection:(UICollectionViewScrollDirection)scrollDirection
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate
backgroudColor:(UIColor *)backgroudColor;
+(UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
itmeSize:(CGSize)itmeSize
sectionInset:(UIEdgeInsets)sectionInset
minimumLineSpacing:(CGFloat)minimumLineSpacing
minimumInteritemSpacing:(CGFloat)minimumInteritemSpacing
scrollDirection:(UICollectionViewScrollDirection)scrollDirection
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate
backgroudColor:(UIColor *)backgroudColor
headerReuseIdentifier:(NSString *)headerReuseIdentifier
footerReuseIdentifier:(NSString *)footerReuseIdentifier;
#pragma mark 创建UIScrollView
+(UIScrollView*)makeScrollViewWithFrame:(CGRect)frame andSize:(CGSize)size;
#pragma mark 创建UIPageControl
+(UIPageControl*)makePageControlWithFram:(CGRect)frame;
#pragma mark 创建UISlider
+(UISlider*)makeSliderWithFrame:(CGRect)rect AndImage:(UIImage*)image;
#pragma mark 创建时间转换字符串
+(NSString *)stringFromDateWithHourAndMinute:(NSDate *)date;
#pragma mark 内涵图需要的方法
+ (NSString *)stringDateWithTimeInterval:(NSString *)timeInterval;
+ (CGFloat)textHeightWithString:(NSString *)text width:(CGFloat)width fontSize:(NSInteger)fontSize;
+ (NSString *)addOneByIntegerString:(NSString *)integerString;
+(void)changeTextColorWithLabel:(UILabel*)label changeStr:(NSString *)str color:(UIColor *)color;
+(void)changeTextColorWithLabel:(UILabel *)label range:(NSRange)range color:(UIColor *)color;
+(void)changeTextFontWithLabel:(UILabel*)label range:(NSRange)range font:(UIFont *)font;
+(void)changeTextFontWithLabel:(UILabel*)label changeStr:(NSString *)str font:(UIFont *)font;
+(void)changeTextWithLabel:(UILabel*)label changeStr:(NSString *)str font:(UIFont *)font andColor:(UIColor *)color;
+(void)changeTextFontWithLabel:(UILabel*)label changeStrings:(NSArray <NSString*>*)strings font:(UIFont *)font;
+(void)changeTextColorWithlabel:(UILabel *)label changeStrings:(NSArray <NSString *>*)strings color:(UIColor *)color;
+(void)changeTextColorWithlabel:(UILabel *)label changeString:(NSString *)str backGroudColor:(UIColor *)backColor color:(UIColor *)color;
+(void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str;
+(void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str andFont:(UIFont *)font;
+(void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str andFont:(UIFont *)font andColor:(UIColor *)color;
+(void)addUnderLineWithLabel:(UILabel *)label range:(NSRange)range andFont:(UIFont *)font;
+(void)addUnderLineWithLabel:(UILabel *)label range:(NSRange)range andFont:(UIFont *)font andColor:(UIColor *)color;
///动态获取label的高 9月17日新增
+(CGFloat)loadDynamicLabelHeightWithLabel:(UILabel *)lab;
///动态获取label的宽 9月17日新增
+(CGFloat)loadDynamicLabelWidthWithLabel:(UILabel *)lab;
@end

View File

@@ -0,0 +1,761 @@
//
// FZYControl.m
//
// Created by on 2016/8/27.
// Copyright © 2018 . All rights reserved.
//
#import "FZYControl.h"
@implementation FZYControl
#pragma mark ---- create Label ----------
+ (UILabel *)createLabelFromFont:(UIFont *)font textColor:(UIColor *)color {
UILabel *label = [[UILabel alloc]init];
label.font = font;
label.textColor = color;
return label;
}
+ (UILabel *)createLabelFromFont:(UIFont *)font textColor:(UIColor *)color textAlignment:(NSTextAlignment)textAlignment {
UILabel *label = [FZYControl createLabelFromFont:font textColor:color];
label.textAlignment = textAlignment;
return label;
}
+ (UILabel *)createLabelFromFont:(UIFont *)font textColor:(UIColor *)color numberOfLines:(NSInteger)numberOfLines {
UILabel *label = [FZYControl createLabelFromFont:font textColor:color];
label.numberOfLines = numberOfLines;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame backgoudColor:(UIColor *)color {
UILabel *label = [[UILabel alloc]initWithFrame:frame];
label.backgroundColor = color;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame backgoudColor:(UIColor *)color tag:(NSInteger)tag {
UILabel *label = [self createLabelWithFrame:frame backgoudColor:color];
label.tag = tag;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text
{
UILabel *label = [[UILabel alloc]initWithFrame:frame];
//
label.numberOfLines = 0;
//
label.textAlignment = NSTextAlignmentLeft;
label.backgroundColor = [UIColor clearColor];
label.font = font;
//
label.lineBreakMode = NSLineBreakByWordWrapping;
//
label.textColor =COLOR16(0xffffff);
//~
label.adjustsFontSizeToFitWidth = YES;
label.text = text;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text color:(UIColor *)color
{
UILabel *label = [[UILabel alloc]initWithFrame:frame];
label.font = font;
//
// label.lineBreakMode=NSLineBreakByWordWrapping;
//
label.textColor = color;
//~
label.text = text;
label.numberOfLines = 0;
return label;
}
+ (UILabel *)createLabelWithframe:(CGRect)frame Font:(UIFont *)font Text:(NSString *)text color:(UIColor *)color {
UILabel *label = [[UILabel alloc]initWithFrame:frame];
label.font = font;
//
// label.lineBreakMode=NSLineBreakByWordWrapping;
//
label.textColor = color;
//~
label.text = text;
label.numberOfLines = 0;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
tag:(NSInteger)tag {
UILabel *label = [FZYControl createLabelWithFrame:frame Font:font Text:text color:color];
label.tag = tag;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
textAlignment:(NSTextAlignment)alignment {
UILabel *label = [self createLabelWithFrame:frame Font:font Text:text color:color];
label.textAlignment = alignment;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
textAlignment:(NSTextAlignment)alignment
backgroundColor:(UIColor *)backgroundColor {
UILabel *label = [self createLabelWithFrame:frame Font:font Text:text color:color textAlignment:alignment];
label.backgroundColor = backgroundColor;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
textAlignment:(NSTextAlignment)alignment
backgroundColor:(UIColor *)backgroundColor
cornerRadius:(CGFloat)cornerRadius {
UILabel *label = [self createLabelWithFrame:frame Font:font Text:text color:color textAlignment:alignment backgroundColor:backgroundColor];
label.layer.cornerRadius = cornerRadius;
label.layer.masksToBounds = YES;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
textAlignment:(NSTextAlignment)alignment
numberOfLines:(NSInteger)numberOfLines {
UILabel *label = [self createLabelWithFrame:frame Font:font Text:text color:color textAlignment:alignment];
label.numberOfLines = numberOfLines;
return label;
}
+ (UILabel *)createLabelWithFrame:(CGRect)frame
Font:(UIFont *)font
Text:(NSString *)text
color:(UIColor *)color
textAlignment:(NSTextAlignment)alignment
numberOfLines:(NSInteger)numberOfLines
tag:(NSInteger)tag {
UILabel *label = [self createLabelWithFrame:frame Font:font Text:text color:color textAlignment:alignment numberOfLines:numberOfLines];
label.tag = tag;
return label;
}
#pragma mark ---- create UIButton ----------
+ (UIButton *)createButtonWithFrame:(CGRect)frame
Target:(id)target
Action:(SEL)action
Title:(NSString *)title
titlColor:(UIColor *)color
font:(UIFont *)textFont
tag:(NSInteger)tag {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
button.tag = tag;
button.titleLabel.font = textFont;
[button setTitle:title forState:UIControlStateNormal];
[button setTitleColor:color forState:UIControlStateNormal];
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return button;
}
/** action title textFont backgroudColor */
+ (UIButton *)createButtonWithFrame:(CGRect)frame
Target:(id)target
Action:(SEL)action
Title:(NSString *)title
titlColor:(UIColor *)color
font:(UIFont *)textFont
tag:(NSInteger)tag
backgroundColor:(UIColor *)backgroudColor {
UIButton *button = [self createButtonWithFrame:frame Target:target Action:action Title:title titlColor:color font:textFont tag:tag];
button.backgroundColor = backgroudColor;
return button;
}
+ (UIButton *)createButtonWithFrame:(CGRect)frame buttonTitleFont:(UIFont *)buttonTitleFont buttonTitle:(NSString *)buttonTitle {
UIButton *button = [[UIButton alloc]initWithFrame:frame];
button.titleLabel.font = buttonTitleFont;
[button setTitle:buttonTitle forState:(UIControlStateNormal)];
return button;
}
/** action imageName title */
+ (UIButton *)createButtonWithFrame:(CGRect)frame
ImageName:(NSString *)imageName
Target:(id)target
Action:(SEL)action
font:(UIFont *)font
Title:(NSString *)title
{
UIButton *button = [self createButtonWithFrame:frame ImageName:imageName selectedImage:imageName Target:target Action:action Title:title tag:0];
button.titleLabel.font = font;
return button;
}
/** imageName selected title selectedTitle color selectedColor action font bgColor*/
+ (UIButton *)createButtonWithFrame:(CGRect)frame
ImageName:(NSString *)imageName
selectedImage:(NSString *)selected
Title:(NSString *)title
selectedTitle:(NSString *)selectedTitle
titleColor:(UIColor *)color
selectedTitleColor:(UIColor *)selectedColor
Target:(id)target
Action:(SEL)action
titleFont:(UIFont *)font
backgroundColor:(UIColor *)bgColor
tag:(NSInteger)tag {
UIButton *button = [self createButtonWithFrame:frame ImageName:imageName selectedImage:selected Target:target Action:action Title:nil tag:tag];
[button setTitle:title forState:(UIControlStateNormal)];
[button setTitle:selectedTitle forState:(UIControlStateSelected)];
[button setTitleColor:color forState:(UIControlStateNormal)];
[button setTitleColor:selectedColor forState:(UIControlStateSelected)];
button.titleLabel.font = font;
button.backgroundColor = bgColor;
return button;
}
/** imageName selected */
+ (UIButton *)createButtonWithFrame:(CGRect)frame
ImageName:(NSString *)imageName
selectedImage:(NSString *)selected
Target:(id)target
Action:(SEL)action
Title:(NSString *)title
tag:(NSInteger)tag {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
button.tag = tag;
[button setTitleColor:UIColor.blackColor forState:(UIControlStateNormal)];
[button setTitle:title forState:UIControlStateNormal];
//使
if (imageName.length) {
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:selected] forState:UIControlStateSelected];
}
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return button;
}
+ (UIButton *)createButtonWithFrame:(CGRect)frame
backgroundImageName:(NSString *)imageName
selectedImage:(NSString *)selected
Target:(id)target
Action:(SEL)action
Title:(NSString *)title
tag:(NSInteger)tag {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
button.tag = tag;
[button setTitleColor:UIColor.blackColor forState:(UIControlStateNormal)];
[button setTitle:title forState:UIControlStateNormal];
//使
if (imageName.length) {
[button setBackgroundImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:selected] forState:UIControlStateSelected];
}
button.titleLabel.textAlignment = NSTextAlignmentCenter;
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
return button;
}
/** font title titleColor backgorudColor */
+ (UIButton *)createButtonWithFrame:(CGRect)frame
buttonTitleFont:(UIFont *)font
buttonTitle:(NSString *)title
buttonTitleColor:(UIColor *)titleColor
backgorudColor:(UIColor *)backgorudColor {
UIButton *button = [self createButtonWithFrame:frame buttonTitleFont:font buttonTitle:title];
[button setTitleColor:titleColor forState:(UIControlStateNormal)];
button.backgroundColor = backgorudColor;
return button;
}
/** font title titleColor backgorudColor borderColor borderWidth*/
+ (UIButton *)createButtonWithFrame:(CGRect)frame
buttonTitleFont:(UIFont *)font
buttonTitle:(NSString *)title
buttonTitleColor:(UIColor *)titleColor
backgorudColor:(UIColor *)backgorudColor
borderColor:(CGColorRef)borderColor
borderWidth:(CGFloat)borderWidth
action:(SEL)action
target:(id)target {
UIButton *button = [self createButtonWithFrame:frame buttonTitleFont:font buttonTitle:title buttonTitleColor:titleColor backgorudColor:backgorudColor];
button.layer.borderColor = borderColor;
button.layer.borderWidth = borderWidth;
[button addTarget:target action:action forControlEvents:(UIControlEventTouchUpInside)];
return button;
}
+ (UIButton *)createButtonWithFrame:(CGRect)frame {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = frame;
return button;
}
+ (UIButton *)createButtonWithFrame:(CGRect)frame
buttonImage:(NSString *)imageName {
UIButton *button = [self createButtonWithFrame:frame];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
return button;
}
+ (UIButton *)createButtonWithFrame:(CGRect)frame buttonType:(UIButtonType)type buttonImage:(NSString *)imageName Target:(id)target Action:(SEL)action {
UIButton *button = [self createButtonWithFrame:frame];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[button addTarget:target action:action forControlEvents:(UIControlEventTouchUpInside)];
return button;
}
#pragma mark ----- tableView -----
+ (UITableView *)createTableViewWithFrame:(CGRect)frame
style:(UITableViewStyle)style
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate {
UITableView *tableView = [[UITableView alloc]initWithFrame:frame style:style];
tableView.dataSource = dataSource;
tableView.delegate = delegate;
return tableView;
}
+ (UITableView *)createTableViewWithFrame:(CGRect)frame style:(UITableViewStyle)style
backgroudColor:(UIColor *)backgroudColor
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate {
UITableView *tableView = [self createTableViewWithFrame:frame style:style dataSource:dataSource delegate:delegate];
tableView.backgroundColor = backgroudColor;
return tableView;
}
+ (UITableView *)createTableViewWithFrame:(CGRect)frame style:(UITableViewStyle)style
backgroudColor:(UIColor *)backgroudColor
dataSource:(id<UITableViewDataSource>)dataSource
delegate:(id<UITableViewDelegate>)delegate
separatorStyle:(UITableViewCellSeparatorStyle)separatorStyle {
UITableView *tableView = [self createTableViewWithFrame:frame style:style backgroudColor:backgroudColor dataSource:dataSource delegate:delegate];
tableView.separatorStyle = separatorStyle;
return tableView;
}
#pragma mark ----- UICollectionView -----
+ (UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
itmeSize:(CGSize)itmeSize
sectionInset:(UIEdgeInsets)sectionInset
minimumLineSpacing:(CGFloat)minimumLineSpacing
minimumInteritemSpacing:(CGFloat)minimumInteritemSpacing
scrollDirection:(UICollectionViewScrollDirection)scrollDirection
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate
backgroudColor:(UIColor *)backgroudColor {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
layout.itemSize = itmeSize;
layout.sectionInset = sectionInset;
layout.minimumLineSpacing = minimumLineSpacing;
layout.minimumInteritemSpacing = minimumInteritemSpacing;
layout.scrollDirection = scrollDirection;
UICollectionView *view = [self createCollectionViewFromFrame:frame collectionViewLayout:layout dataSource:dataSource delegate:delegate];
view.backgroundColor = backgroudColor;
[view registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"item"];
return view;
}
+ (UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
itmeSize:(CGSize)itmeSize
sectionInset:(UIEdgeInsets)sectionInset
minimumLineSpacing:(CGFloat)minimumLineSpacing
minimumInteritemSpacing:(CGFloat)minimumInteritemSpacing
scrollDirection:(UICollectionViewScrollDirection)scrollDirection
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate
backgroudColor:(UIColor *)backgroudColor
headerReuseIdentifier:(NSString *)headerReuseIdentifier
footerReuseIdentifier:(NSString *)footerReuseIdentifier {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
layout.itemSize = itmeSize;
layout.sectionInset = sectionInset;
layout.minimumLineSpacing = minimumLineSpacing;
layout.minimumInteritemSpacing = minimumInteritemSpacing;
layout.scrollDirection = scrollDirection;
UICollectionView *view = [self createCollectionViewFromFrame:frame collectionViewLayout:layout dataSource:dataSource delegate:delegate];
view.backgroundColor = backgroudColor;
[view registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"item"];
[view registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:headerReuseIdentifier];
[view registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:footerReuseIdentifier];
return view;
}
+ (UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
collectionViewLayout:(UICollectionViewLayout *)layout
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate {
UICollectionView *colltionView = [[UICollectionView alloc]initWithFrame:frame collectionViewLayout:layout];
colltionView.delegate = delegate;
colltionView.dataSource = dataSource;
return colltionView;
}
+ (UICollectionView *)createCollectionViewFromFrame:(CGRect)frame
collectionViewLayout:(UICollectionViewLayout *)layout
dataSource:(id<UICollectionViewDataSource>)dataSource
delegate:(id<UICollectionViewDelegate>)delegate
backgroudColor:(UIColor *)backgroudColor {
UICollectionView *collectionView = [self createCollectionViewFromFrame:frame collectionViewLayout:layout dataSource:dataSource delegate:delegate];
collectionView.backgroundColor = backgroudColor;
return collectionView;
}
#pragma----- UIImageView --------
//UIImageview,
+ (UIImageView *)createImageViewWithFrame:(CGRect)frame ImageName:(NSString *)imageName
{
UIImageView *imageView = [[UIImageView alloc]initWithFrame:frame];
if (imageName.length) {
imageView.image = [UIImage imageNamed:imageName];
}
// imageView.userInteractionEnabled=YES;
return imageView;
}
+ (UIImageView *)createImageViewWithFrame:(CGRect)frame ImageName:(NSString *)imageName contentMode:(UIViewContentMode)contentMode {
UIImageView *imageView = [self createImageViewWithFrame:frame ImageName:imageName];
imageView.contentMode = contentMode;
return imageView;
}
+ (UIImageView *)createImageViewWithFrame:(CGRect)frame ImageName:(NSString *)imageName imageTagValue:(NSInteger)tag {
UIImageView *imageView = [self createImageViewWithFrame:frame ImageName:imageName];
imageView.tag = tag;
return imageView;
}
#pragma----- UIView --------
+ (UIView *)viewWithFrame:(CGRect)frame {
UIView *view = [[UIView alloc]initWithFrame:frame];
return view;
}
+ (UIView *)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color {
UIView *view = [FZYControl viewWithFrame:frame];
view.backgroundColor = color;
return view;
}
+ (UIView *)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color borderColor:(CGColorRef)borderColor borderWidth:(CGFloat)borderWidth {
UIView *view = [self viewWithFrame:frame backgroundColor:color];
view.layer.borderColor = borderColor;
view.layer.borderWidth = borderWidth;
return view;
}
+ (UIView *)viewWithFrame:(CGRect)frame backgroundColor:(UIColor *)color viewTagValue:(NSInteger)tag {
UIView *view = [FZYControl viewWithFrame:frame backgroundColor:color];
view.tag = tag;
return view;
}
#pragma mark
+ (UIScrollView *)makeScrollViewWithFrame:(CGRect)frame andSize:(CGSize)size
{
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.pagingEnabled = YES;
scrollView.contentSize = size;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.scrollsToTop = NO;
return scrollView;
}
+ (UIPageControl *)makePageControlWithFram:(CGRect)frame
{
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:frame];
pageControl.numberOfPages = 2;
pageControl.currentPage = 0;
return pageControl;
}
+ (UISlider *)makeSliderWithFrame:(CGRect)rect AndImage:(UIImage *)image
{
UISlider *slider = [[UISlider alloc]initWithFrame:rect];
slider.minimumValue = 0;
slider.maximumValue = 1;
[slider setThumbImage:[UIImage imageNamed:@"qiu"] forState:UIControlStateNormal];
slider.maximumTrackTintColor = [UIColor grayColor];
slider.minimumTrackTintColor = [UIColor yellowColor];
slider.continuous = YES;
slider.enabled = YES;
return slider;
}
+ (NSString *)stringFromDateWithHourAndMinute:(NSDate *)date
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//zzzzzz
[dateFormatter setDateFormat:@"HH:mm"];
NSString *destDateString = [dateFormatter stringFromDate:date];
return destDateString;
}
#pragma mark
+ (NSString *)stringDateWithTimeInterval:(NSString *)timeInterval
{
NSTimeInterval seconds = [timeInterval integerValue];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds];
NSDateFormatter *format = [[NSDateFormatter alloc] init];
format.dateFormat = @"yyyy-MM-dd HH:mm:ss";
return [format stringFromDate:date];
}
+ (CGFloat)textHeightWithString:(NSString *)text width:(CGFloat)width fontSize:(NSInteger)fontSize
{
NSDictionary *dict = @{ NSFontAttributeName: [UIFont systemFontOfSize:fontSize] };
// 使280*float使14frame size : (280*xxx)!!
CGRect frame = [text boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil];
return frame.size.height + 5;
}
// 1
+ (NSString *)addOneByIntegerString:(NSString *)integerString
{
NSInteger integer = [integerString integerValue];
return [NSString stringWithFormat:@"%ld", integer + 1];
}
+ (void)changeTextFontWithLabel:(UILabel *)label changeStr:(NSString *)str font:(UIFont *)font {
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:label.text];
if (label.attributedText) {
attr = label.attributedText.mutableCopy;
}
if (![label.text containsString:str]) {
return;
}
NSRange range = [label.text rangeOfString:str];
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+ (void)changeTextColorWithLabel:(UILabel *)label changeStr:(NSString *)str color:(UIColor *)color {
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:label.text];
if (label.attributedText) {
attr = label.attributedText.mutableCopy;
}
if (![label.text containsString:str]) {
return;
}
NSRange range = [label.text rangeOfString:str];
[attr addAttribute:NSForegroundColorAttributeName value:color range:range];
label.attributedText = attr;
}
+ (void)changeTextColorWithlabel:(UILabel *)label changeString:(NSString *)str backGroudColor:(UIColor *)backColor color:(UIColor *)color {
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc]initWithString:label.text];
if (label.attributedText) {
attr = label.attributedText.mutableCopy;
}
if (![label.text containsString:str]) {
return;
}
NSRange range = [label.text rangeOfString:str];
[attr addAttribute:NSBackgroundColorAttributeName value:backColor range:range];
[attr addAttribute:NSForegroundColorAttributeName value:color range:range];
label.attributedText = attr;
}
+ (void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
NSRange range = [label.text rangeOfString:str];
// [attr addAttribute:NSForegroundColorAttributeName value:RGB_COLOR(@"#999999", 1) range:range];
[attr addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] range:range];
label.attributedText = attr;
}
+ (void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str andFont:(UIFont *)font {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
NSRange range = NSMakeRange(label.text.length - str.length, str.length);
[attr addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] range:range];
[attr addAttribute:NSForegroundColorAttributeName value:HEXCOLOR(0x999999) range:range];
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+ (void)addUnderLineWithLabel:(UILabel *)label changeStr:(NSString *)str andFont:(UIFont *)font andColor:(UIColor *)color{
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
NSRange range = NSMakeRange(label.text.length - str.length, str.length);
[attr addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] range:range];
[attr addAttribute:NSForegroundColorAttributeName value:color range:range];
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+ (void)addUnderLineWithLabel:(UILabel *)label range:(NSRange)range andFont:(UIFont *)font {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
[attr addAttribute:NSStrikethroughStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlinePatternSolid | NSUnderlineStyleSingle] range:range];
[attr addAttribute:NSForegroundColorAttributeName value:HEXCOLOR(0x999999) range:range];
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+ (void)changeTextColorWithLabel:(UILabel *)label range:(NSRange)range color:(UIColor *)color {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
if (range.location + range.length > label.text.length) {
NSLog(@"range越界 -- %@,%ld,%ld", label.text, range.location, range.length);
return;
}
[attr addAttribute:NSForegroundColorAttributeName value:color range:range];
label.attributedText = attr;
}
+ (void)changeTextFontWithLabel:(UILabel *)label range:(NSRange)range font:(UIFont *)font {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
if (range.location + range.length > label.text.length) {
NSLog(@"range越界 -- %@,%ld,%ld", label.text, range.location, range.length);
return;
}
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+(void)changeTextWithLabel:(UILabel *)label changeStr:(NSString *)str font:(UIFont *)font andColor:(UIColor *)color {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
NSRange range = NSMakeRange(label.text.length-str.length, str.length);
[attr addAttribute:NSForegroundColorAttributeName value:color range:range];
[attr addAttribute:NSFontAttributeName value:font range:range];
label.attributedText = attr;
}
+ (void)changeTextFontWithLabel:(UILabel *)label changeStrings:(NSArray<NSString *> *)strings font:(UIFont *)font {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
for (NSString *str in strings) {
NSRange range = [label.text rangeOfString:str];
[attr addAttribute:NSFontAttributeName value:font range:range];
}
label.attributedText = attr;
}
+ (void)changeTextColorWithlabel:(UILabel *)label changeStrings:(NSArray<NSString *> *)strings color:(UIColor *)color {
NSMutableAttributedString *attr;
if (label.attributedText!=nil) {
attr = [[NSMutableAttributedString alloc]initWithAttributedString:label.attributedText];
}else{
attr = [[NSMutableAttributedString alloc] initWithString:label.text];
}
for (NSString *str in strings) {
NSRange range = [label.text rangeOfString:str];
[attr addAttribute:NSForegroundColorAttributeName value:str range:range];
}
label.attributedText = attr;
}
// label
+(CGFloat)loadDynamicLabelHeightWithLabel:(UILabel *)lab
{
lab.lineBreakMode = NSLineBreakByWordWrapping;
lab.numberOfLines = 0;
NSDictionary *attributes = @{NSFontAttributeName:lab.font};
CGSize size = [lab.text boundingRectWithSize:CGSizeMake(lab.frame.size.width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
return size.height;
}
// label
+(CGFloat)loadDynamicLabelWidthWithLabel:(UILabel *)lab
{
lab.lineBreakMode = NSLineBreakByWordWrapping;
lab.numberOfLines = 1;
NSDictionary *attributes = @{NSFontAttributeName:lab.font};
CGSize size = [lab.text boundingRectWithSize:CGSizeMake(MAXFLOAT,lab.frame.size.height) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
return size.width;
}
@end

View File

@@ -0,0 +1,49 @@
//
// app
//
// Created by binbins on 2019/3/26.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import "GVUserDefaults.h"
NS_ASSUME_NONNULL_BEGIN
@interface GVUserDefaults (APP)
@property (nonatomic, strong) NSDictionary *appConfigDict;
@property (nonatomic, copy) NSString *rongKey; //3argexb63f7me
@property (nonatomic, copy) NSString *socketUrl; // @"ws://118.190.206.115:9091/ws"
@property (nonatomic, strong) NSDictionary *rawUserDict;
@property (nonatomic, copy) NSString *token;
//抱人上麦用,当前位置
@property(nonatomic, copy) NSString *position;
//公屏筛选
//每次默认是全部
//0全部1聊天2互动3其他
@property(nonatomic, copy) NSString *publicType;
//自己的房间ID
@property(nonatomic, copy) NSString *rid;
/** 是否打开房主魅力值计算器 */
@property(nonatomic, strong) NSString *is_calculator;
/** 是否开启盲盒巡乐会 */
@property(nonatomic, strong) NSString *is_open_blindXlh;
#pragma mark - 不重要
@property (nonatomic, assign) BOOL closeGiftEffect; //礼物特效
@property(nonatomic, copy) NSString *withdraw_rate;//提现实际到账比例
@property (nonatomic, copy) NSString *tencentyun_im_appid;
@property (nonatomic, copy) NSString *del_user_relation_money;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,34 @@
//
// app
//
// Created by binbins on 2019/3/26.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import "GVUserDefaults+APP.h"
@implementation GVUserDefaults (APP)
@dynamic appConfigDict;
@dynamic rongKey;
@dynamic socketUrl;
@dynamic withdraw_rate;
@dynamic rawUserDict;
@dynamic token;
@dynamic position;
@dynamic publicType;
@dynamic rid;
@dynamic closeGiftEffect;
@dynamic is_calculator;
@dynamic tencentyun_im_appid;
@end

View File

@@ -0,0 +1,31 @@
//
// NSDictionary+SafeObject.h
// iBIMiPhone
//
// Created by yuebin on 2018/11/20.
// Copyright © 2018年 ysg. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSDictionary (SafeObject)
- (NSInteger)safeIntForKey:(NSString *)key;
- (NSString *)safeStringForKey:(NSString *)key;
- (NSDictionary *)safeDictionaryForKey:(NSString *)key;
- (BOOL)safeBoolForKey:(NSString *)key;
- (float)safeFloatForKey:(NSString *)key;
- (NSURL *)safeUrlForKey:(NSString *)key;
- (NSArray *)safeArrayForKey:(NSString *)key;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,168 @@
//
// NSDictionary+SafeObject.m
// iBIMiPhone
//
// Created by yuebin on 2018/11/20.
// Copyright © 2018 ysg. All rights reserved.
//
#import "NSDictionary+SafeObject.h"
@implementation NSDictionary (SafeObject)
- (BOOL)objIsNull {
return (self == nil || [self isEqual:[NSNull null]]) ? YES : NO;
}
+ (BOOL)objIsNull:(id)obj {
return (obj == nil || [obj isEqual:[NSNull null]]) ? YES : NO;
}
- (NSInteger)safeIntForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return -1;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"(字典key非法");
return -1;
}
id value = [self objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
return ((NSString *)value).intValue;
}
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).integerValue;
}
if ([value isKindOfClass:NSNull.class]) {
return 0;
}
return -1;
}
- (NSString *)safeStringForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @"";
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"stringkey非法");
return @"";
}
NSString *value = [self objectForKey:key];
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).stringValue;
}
if ([value isKindOfClass:[NSString class]] && (value != nil) ) {
return value;
}
return @"";
}
- (NSDictionary *)safeDictionaryForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @{};
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"字典key非法");
return @{};
}
NSDictionary *value = [self objectForKey:key];
if ([value isKindOfClass:[NSDictionary class]] && (value != nil)) {
return value;
}
return @{};
}
- (BOOL)safeBoolForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return NO;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"boolkey非法");
return NO;
}
NSString *value = [self objectForKey:key];
if ((value != nil) || [value isKindOfClass:[NSString class]]) {
return value.boolValue;
}
return NO;
}
- (float)safeFloatForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return -1.0f;
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"(floatkey非法");
return -1.0f;
}
id value = [self objectForKey:key];
if ([value isKindOfClass:[NSString class]]) {
return ((NSString *)value).floatValue;
}
if ([value isKindOfClass:[NSNumber class]]) {
return ((NSNumber *)value).floatValue;
}
return -1.0f;
}
- (NSURL *)safeUrlForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return [NSURL URLWithString:@""];
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"urlkey非法");
return [NSURL URLWithString:@""];
}
NSString *value = [self objectForKey:key];
if ((value != nil) && [value isKindOfClass:[NSString class]]) {
NSString *url = [value stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
return [NSURL URLWithString:url];
}
return [NSURL URLWithString:@""];
}
- (NSArray *)safeArrayForKey:(NSString *)key {
if ([self objIsNull] || ![self isKindOfClass:[NSDictionary class]]) {
NSLog(@"字典非法");
return @[];
}
if ([NSDictionary objIsNull:key] || ![key isKindOfClass:[NSString class]]) {
NSLog(@"arraykey非法");
return @[];
}
NSArray *value = [self objectForKey:key];
if ((value != nil) && [value isKindOfClass:[NSArray class]]) {
return value;
}
return @[];
}
@end

View File

@@ -0,0 +1,96 @@
/* --- UIColor 分类 --- */
#import <UIKit/UIKit.h>
/**
渐变方式
- FXGradientChangeDirectionHorizontal: 水平渐变
- FXGradientChangeDirectionVertical: 竖直渐变
- FXGradientChangeDirectionUpwardDiagonalLine: 向下对角线渐变
- FXGradientChangeDirectionDownDiagonalLine: 向上对角线渐变
*/
typedef NS_ENUM(NSInteger, FXGradientChangeDirection) {
FXGradientChangeDirectionHorizontal,
FXGradientChangeDirectionVertical,
FXGradientChangeDirectionUpwardDiagonalLine,
FXGradientChangeDirectionDownDiagonalLine,
};
NS_ASSUME_NONNULL_BEGIN
#pragma mark - 实例化
#pragma mark -
@interface UIColor (YX_UIColorInstantiation)
/**
实例化(16进制数字)
@param hex 16进制无符号32位整数
@return UIColor
*/
+ (instancetype)yx_colorWithHex:(uint32_t)hex;
/**
实例化(16进制数字+透明度)
@param hex 16进制无符号32位整数
@param alpha 透明度(0.0-1.0)
@return UIColor
*/
+ (instancetype)yx_colorWithHex:(uint32_t)hex withAlpha:(CGFloat)alpha;
/**
实例化(RGB)
@param red 红
@param green 绿
@param blue 蓝
@return UIColor
*/
+ (instancetype)yx_colorWithRed:(uint8_t)red green:(uint8_t)green blue:(uint8_t)blue;
/**
实例化(随机颜色)
@return UIColor
*/
+ (instancetype)yx_colorRandom;
/**
实例化(可调节亮度)
@param color 颜色
@param delta 亮度
@return UIColor
*/
+ (UIColor *)yx_colorRGBonvertToHSB:(UIColor *)color withBrighnessDelta:(CGFloat)delta;
/**
实例化(可调节透明度)
@param color 颜色
@param delta 透明度
@return UIColor
*/
+ (UIColor *)yx_colorRGBonvertToHSB:(UIColor *)color withAlphaDelta:(CGFloat)delta;
/// 设置随机颜色
/// @param size 控件size
/// @param direction 颜色渐变方向
/// @param startcolor 开始颜色
/// @param endColor 结束颜色
+ (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
direction:(FXGradientChangeDirection)direction
startColor:(UIColor *)startcolor
endColor:(UIColor *)endColor ;
/// 设置随机颜色
/// @param size 控件size
/// @param direction 颜色渐变方向
/// @param colors 颜色数组,格式:(__bridge id)RGB_COLOR(@"#399BEE", 1).CGColor
+ (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
direction:(FXGradientChangeDirection)direction colors:(NSArray *)colors;
@end
#pragma mark - 分类
#pragma mark -
@interface UIColor (YX_UIColorCategory)
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,141 @@
#import "UIColor+Category.h"
@implementation UIColor (YX_UIColorInstantiation)
+ (instancetype)yx_colorWithHex:(uint32_t)hex {
uint8_t r = (hex & 0xff0000) >> 16;
uint8_t g = (hex & 0x00ff00) >> 8;
uint8_t b = hex & 0x0000ff;
return [self yx_colorWithRed:r green:g blue:b];
}
+ (instancetype)yx_colorWithHex:(uint32_t)hex withAlpha:(CGFloat)alpha {
uint8_t r = (hex & 0xff0000) >> 16;
uint8_t g = (hex & 0x00ff00) >> 8;
uint8_t b = hex & 0x0000ff;
return [self colorWithRed:r / 255.0 green:g / 255.0 blue:b / 255.0 alpha:alpha];
}
+ (instancetype)yx_colorWithRed:(uint8_t)red green:(uint8_t)green blue:(uint8_t)blue {
return [UIColor colorWithRed:red / 255.0 green:green / 255.0 blue:blue / 255.0 alpha:1.0];
}
+ (instancetype)yx_colorRandom {
return [UIColor yx_colorWithRed:arc4random_uniform(256) green:arc4random_uniform(256) blue:arc4random_uniform(256)];
}
+ (UIColor *)yx_colorRGBonvertToHSB:(UIColor *)color withBrighnessDelta:(CGFloat)delta {
CGFloat hue = 0.0f;
CGFloat saturation = 0.0f;
CGFloat brightness = 0.0f;
CGFloat alpha = 0.0f;
[color getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
brightness += delta;
return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha];
}
+ (UIColor *)yx_colorRGBonvertToHSB:(UIColor *)color withAlphaDelta:(CGFloat)delta {
CGFloat hue = 0.0f;
CGFloat saturation = 0.0f;
CGFloat brightness = 0.0f;
CGFloat alpha = 0.0f;
[color getHue:&hue saturation:&saturation brightness:&brightness alpha:&alpha];
alpha += delta;
return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:alpha];
}
+ (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
direction:(FXGradientChangeDirection)direction
startColor:(UIColor *)startcolor
endColor:(UIColor *)endColor {
if (CGSizeEqualToSize(size, CGSizeZero) || !startcolor || !endColor) {
return nil;
}
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, size.width, size.height);
CGPoint startPoint = CGPointZero;
if (direction == FXGradientChangeDirectionDownDiagonalLine) {
startPoint = CGPointMake(0.0, 1.0);
}
gradientLayer.startPoint = startPoint;
CGPoint endPoint = CGPointZero;
switch (direction) {
case FXGradientChangeDirectionHorizontal:
endPoint = CGPointMake(1.0, 0.0);
break;
case FXGradientChangeDirectionVertical:
endPoint = CGPointMake(0.0, 1.0);
break;
case FXGradientChangeDirectionUpwardDiagonalLine:
endPoint = CGPointMake(1.0, 1.0);
break;
case FXGradientChangeDirectionDownDiagonalLine:
endPoint = CGPointMake(1.0, 0.0);
break;
default:
break;
}
gradientLayer.endPoint = endPoint;
gradientLayer.colors = @[(__bridge id)startcolor.CGColor, (__bridge id)endColor.CGColor];
UIGraphicsBeginImageContext(size);
[gradientLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return [UIColor colorWithPatternImage:image];
}
+ (instancetype)bm_colorGradientChangeWithSize:(CGSize)size
direction:(FXGradientChangeDirection)direction colors:(NSArray *)colors {
if (CGSizeEqualToSize(size, CGSizeZero) || !colors.count) {
return nil;
}
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, size.width, size.height);
CGPoint startPoint = CGPointZero;
if (direction == FXGradientChangeDirectionDownDiagonalLine) {
startPoint = CGPointMake(0.0, 1.0);
}
gradientLayer.startPoint = startPoint;
CGPoint endPoint = CGPointZero;
switch (direction) {
case FXGradientChangeDirectionHorizontal:
endPoint = CGPointMake(1.0, 0.0);
break;
case FXGradientChangeDirectionVertical:
endPoint = CGPointMake(0.0, 1.0);
break;
case FXGradientChangeDirectionUpwardDiagonalLine:
endPoint = CGPointMake(1.0, 1.0);
break;
case FXGradientChangeDirectionDownDiagonalLine:
endPoint = CGPointMake(1.0, 0.0);
break;
default:
break;
}
gradientLayer.endPoint = endPoint;
gradientLayer.colors = colors;
UIGraphicsBeginImageContext(size);
[gradientLayer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return [UIColor colorWithPatternImage:image];
}
@end
@implementation UIColor (YX_UIColorCategory)
@end

View File

@@ -0,0 +1,24 @@
//
// UIImage+UploadImage.h
// app
//
// Created by binbins on 2019/4/2.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIImage (UploadImage)
/// 把图片上传到服务器并返回url
/// @param finishBlock url 和 原始图片
- (void)uploadToServiceWithBlock:(void(^)(NSString *upUrl, UIImage *upImage))finishBlock;
//不显示上传提示
//- (void)uploadToServiceNoLoadingWithNoTipsWithBlock:(void(^)(NSString *url))finishBlock;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,67 @@
//
// UIImage+UploadImage.m
// app
//
// Created by binbins on 2019/4/2.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import "UIImage+UploadImage.h"
#import "MLNetWorkHelper.h"
@implementation UIImage (UploadImage)
- (void)uploadToServiceWithBlock:(void(^)(NSString *upUrl, UIImage *upImage))finishBlock {
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setValue:GVUSER.token forKey:@"login_token"];
[SVProgressHUD showWithStatus:nil];
[MLNetWorkHelper uploadImagesWithURL:[VERSION_HTTPS_SERVER stringByAppendingString:@"api/upload/img_upload"] parameters:dict name:@"file[]" images:@[self] fileNames:nil imageScale:0.5 imageType:@"png" progress:nil success:^(id responseObject) {
[SVProgressHUD dismiss];
id data = responseObject[@"data"];
if ([data isKindOfClass:[NSArray class]]) {
NSString *imgUrl = minStr([(NSArray *)data firstObject]);
finishBlock(imgUrl, self);
}else {
[MBProgressHUD showAutoMessage:responseObject[@"msg"]];
}
} failure:^(NSError *error) {
[SVProgressHUD dismiss];
[MBProgressHUD showAutoMessage:@"上传失败"];
}];
}
/*
#pragma mark -
- (void)uploadToServiceNoLoadingWithNoTipsWithBlock:(void(^)(NSString *url))finishBlock {
NSData *imageData = UIImageJPEGRepresentation([UIImage fixOrientation:self] ,0.6);
NSDictionary *dic = @{@"user_id":C_string(UserID),};
[BMNetwork.sharedAFNManager.manager POST:BaseServer(@"api/replace/upload_img") parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:imageData name:@"imgFile" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if ([responseObject isKindOfClass:NSData.class]) {
NSError *error;
NSString *originalStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSData * responseData = [originalStr dataUsingEncoding:NSUTF8StringEncoding];
responseObject = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];
}
if ([responseObject isKindOfClass:NSDictionary.class] && [[responseObject safeStringForKey:@"state"] isEqualToString:@"SUCCESS"] ) {
// [LCProgressHUD showText:responseObject[@"msg"]];
NSString *imageUrl = [responseObject safeStringForKey:@"url"];
if (![imageUrl hasPrefix:@"http"]) {
imageUrl = BaseUpLoadImg(imageUrl);
}
finishBlock(imageUrl);
} else {
[QMUITips showError:[responseObject safeStringForKey:@"msg"]];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[QMUITips showError:@"网络错误"];
}];
}
*/
@end

View File

@@ -0,0 +1,21 @@
//
// UIView+EasyTouch.h
// app
//
// Created by binbins on 2019/4/2.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIView (EasyTouch)
typedef void (^OnTouchView)(void);
@property (copy, nonatomic) OnTouchView touchViewBlock;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,39 @@
//
// UIView+EasyTouch.m
// app
//
// Created by binbins on 2019/4/2.
// Copyright © 2019 zhifanYoung. All rights reserved.
//
#import "UIView+EasyTouch.h"
#import <objc/runtime.h>
@implementation UIView (EasyTouch)
static NSString *blockName = @"touchViewBlock";
- (void)setTouchViewBlock:(OnTouchView)touchViewBlock {
self.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchEvent)];
[self addGestureRecognizer:tap];
objc_setAssociatedObject(self, &blockName, touchViewBlock, OBJC_ASSOCIATION_COPY);
}
- (OnTouchView)touchViewBlock {
return objc_getAssociatedObject(self, &blockName);
}
#pragma mark -
- (void)touchEvent {
if (self.touchViewBlock) {
self.touchViewBlock();
}
}
@end

View File

@@ -0,0 +1,38 @@
//
// UIView+EasyShadow.h
// secert
//
// Created by binbins on 2019/5/7.
// Copyright © 2019 binbins. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface UIView (YBUtil)
@property (nonatomic, assign) CGFloat cornerRadius;
- (void)styleShadow;
/// view的圆角阴影效果
/// @param redius 圆角半径
- (void)styleShadowWithRedius:(CGFloat )redius;
/// 首页默认的阴影圆角
- (void)homeShadowWithRadius:(CGFloat)redius;
- (UIImage *)renderImage;
///通过响应者链拿到view的控制器
- (UIViewController *)viewController;
//孤独星球的蓝色渐变色
- (void)styleGradiBlueColor;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,73 @@
//
// UIView+EasyShadow.m
// secert
//
// Created by binbins on 2019/5/7.
// Copyright © 2019 binbins. All rights reserved.
//
#import "UIView+YBUtil.h"
@implementation UIView (YBUtil)
- (void)setCornerRadius:(CGFloat)cornerRadius {
self.layer.cornerRadius = cornerRadius;
self.layer.masksToBounds = YES;
}
- (CGFloat)cornerRadius {
return self.layer.cornerRadius;
}
- (void)styleShadow {
self.layer.shadowColor =COLOR16(0x333333).CGColor;
self.layer.shadowOffset = CGSizeMake(0.7, 0.7);
self.layer.shadowOpacity = 0.28;
self.layer.borderWidth = 0.0001f; //
self.layer.masksToBounds = NO;
// self.layer.cornerRadius = 10;
}
- (void)styleShadowWithRedius:(CGFloat)redius {
self.layer.shadowColor = HEXCOLORA(0xCB8BFB, 0.24).CGColor;
self.layer.shadowOffset = CGSizeMake(0, 2);
self.layer.shadowOpacity = 1;
self.layer.borderWidth = 0.0001f; //
self.layer.masksToBounds = NO;
self.layer.cornerRadius = redius;
}
- (void)homeShadowWithRadius:(CGFloat)redius {
self.layer.shadowColor = [HEXCOLOR(0x5E3EB5) colorWithAlphaComponent:0.04].CGColor;
self.layer.shadowOffset = CGSizeMake(0.5, 0.5);
self.layer.shadowOpacity = 1;
self.layer.borderWidth = 0.0001f; //
self.layer.masksToBounds = NO;
self.layer.cornerRadius = redius;
}
- (UIImage *)renderImage {
// NOYES [UIScreen mainScreen].scale
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, [UIScreen mainScreen].scale);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
- (UIViewController *)viewController {
for (UIView *view = self; view; view = view.superview) {
UIResponder *nextResponder = [view nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}
- (void)styleGradiBlueColor {
self.backgroundColor = [UIColor bm_colorGradientChangeWithSize:self.size direction:FXGradientChangeDirectionHorizontal startColor:mainLightColor endColor:mainDeepColor];
}
@end

View File

@@ -0,0 +1,20 @@
//
// UIViewController+BMNavigationView.h
// buymore
//
// Created by yuebin on 2020/8/31.
// Copyright © 2020 JLC. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "CustomNavigationView.h"
NS_ASSUME_NONNULL_BEGIN
@interface UIViewController (BMNavigationView)
@property (strong, nonatomic) CustomNavigationView *bm_navView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,35 @@
//
// UIViewController+BMNavigationView.m
// buymore
//
// Created by yuebin on 2020/8/31.
// Copyright © 2020 JLC. All rights reserved.
//
#import "UIViewController+BMNavigationView.h"
#import <objc/runtime.h>
@implementation UIViewController (BMNavigationView)
static NSString *navViewName = @"bm_navView";
- (void)setBm_navView:(CustomNavigationView *)bm_navView {
if (bm_navView != self.bm_navView) {
//set
[bm_navView removeFromSuperview];
[self.view addSubview:bm_navView];
//
objc_setAssociatedObject(self, &navViewName, bm_navView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
}
- (CustomNavigationView *)bm_navView {
return objc_getAssociatedObject(self, &navViewName);
}
@end

View File

@@ -0,0 +1,61 @@
//
// UIViewController+PushUtils.h
// buymore
//
// Created by yuebin on 2020/6/22.
// Copyright © 2020 JLC. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@interface UIViewController (PushUtils)
//@property(nonatomic, copy) void (^roomSetBLock)(NSDictionary *dict);
- (void)closeSelfAndPush:(UIViewController *)vc;
/// 语法糖,等同于 [self.navigationController pushViewController:self animated:YES];
- (void)pushSelf;
/// 语法糖,等同于 [self..navigationController popViewControllerAnimated:YES] 或者 [self dismissViewControllerAnimated:YES completion:nil];
- (void)popOrDismissSelf;
/// go universal web
+ (void)goWebWithUrl:(NSString *)webUrl;
///房主去自己的语音房 若没有则进入创建页面
+ (void)roomOwnerGoSelfRoom;
/// 房主或管理员 通过房间id 去到房间设置页
+ (void)goRoomSetWithId:(NSString *)rid roomInfo:(void (^)(void))roomSetBLock;
/// 去指定语音房
/// @param rId 房间id
/// @param pwd 房间密码可选
+ (void)goMicRoomWithRid:(NSString *)rId withPwd:(nullable NSString *)pwd;
/// 去到用户主页
/// @param userid 用户id
+ (void)goUserMainpageWith:(NSString *)userid withRid:(NSString *)rid;
/// 去陪玩页面
/// @param userid 用户id
+ (void)goPeiwanPageWith:(NSString *)userid;
/// 去充值页面
+ (void)goRechageCtrl;
/// 去排行榜页面
+ (void)goRankPageWithRid:(NSString *)rid;
/// 弹出麦位弹框
+ (void)goUserAlertWithUid:(NSString *)uid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,207 @@
//
// UIViewController+PushUtils.m
// buymore
//
// Created by yuebin on 2020/6/22.
// Copyright © 2020 JLC. All rights reserved.
//
#import "UIViewController+PushUtils.h"
#import "BJMicCreateRoomCtrl.h"
#import "RCMicRoomViewController.h"
#import "Room_passRoomView.h"
#import "BJFloatRoomManager.h"
#import "SAIdentityAuthVC.h"
#import "BJRoomManager.h"
#import "BJWebVC.h"
#import "SPWalletContainerVC.h"
#import "SPWalletJinbiVC.h"
@implementation UIViewController (PushUtils)
- (void)closeSelfAndPush:(UIViewController *)vc {
NSArray *viewControlles = self.navigationController.viewControllers;
NSMutableArray *newviewControlles = [NSMutableArray array];
if ([viewControlles count] > 0) {
for (int i=0; i < [viewControlles count]-1; i++) {
[newviewControlles addObject:[viewControlles objectAtIndex:i]];
}
}
[newviewControlles addObject:vc];
[self.navigationController setViewControllers:newviewControlles animated:YES];
}
- (void)pushSelf {
[UIViewController.currentViewController.navigationController pushViewController:self animated:YES];
}
- (void)popOrDismissSelf {
if (UIViewController.currentViewController.navigationController) {
[UIViewController.currentViewController.navigationController popViewControllerAnimated:YES];
}else {
[self dismissViewControllerAnimated:YES completion:nil];
}
}
#pragma mark -
+ (void)goWebWithUrl:(NSString *)webUrl {
if (![webUrl isKindOfClass:NSString.class]) {
return;
}
BJWebVC *next = [[BJWebVC alloc] init];
next.webUrl = C_string(webUrl);
next.useH5NavBar = 0;
[next pushSelf];
}
+ (void)goRoomSetWithId:(NSString *)rid roomInfo:(nonnull void (^)(void))roomSetBLock{
NSDictionary *dict = @{@"rid":C_string(rid)};
NSMutableDictionary *paras = [NSMutableDictionary dictionary];
[paras addEntriesFromDictionary:dict];
[SVProgressHUD showWithStatus:nil];
[RCMicHTTP postWithURLString:@"/api/room/get_room_info" parameters:paras response:^(RCMicHTTPResult *result) {
[SVProgressHUD dismiss];
if (result.success) {
if (result.errorCode == 200) {
//
BJMicCreateRoomCtrl *next = [[BJMicCreateRoomCtrl alloc] init];
next.roomDict = result.content;
next.finishRoomSet = ^{
roomSetBLock();
};
[next pushSelf];
}
}else {
[SVProgressHUD showInfoWithStatus:@"网络错误"];
}
}];
}
+ (void)roomOwnerGoSelfRoom {
if ([GVUSER.rawUserDict safeIntForKey:@"is_real"] == 2) {
[SAIdentityAuthVC.new pushSelf];
return;
}else if ([GVUSER.rawUserDict safeIntForKey:@"is_real"] == 3) {
[SVProgressHUD showInfoWithStatus:@"实名认证审核中"];
return;
}
NSDictionary *dict = @{};
NSMutableDictionary *paras = [NSMutableDictionary dictionary];
[paras addEntriesFromDictionary:dict];
[SVProgressHUD showWithStatus:nil];
[RCMicHTTP postWithURLString:@"/api/room/user_get_room_info" parameters:paras response:^(RCMicHTTPResult *result) {
[SVProgressHUD dismiss];
if (result.success) {
if (result.errorCode == 200 || [result.content isKindOfClass:NSDictionary.class]) {
//
NSString *roomId = [result.content safeStringForKey:@"rid"];
NSString *pwd = [result.content safeStringForKey:@"room_password"];
[UIViewController goMicRoomWithRid:roomId withPwd:pwd];
}else {
[SVProgressHUD showInfoWithStatus:result.message];
}
}else {
[SVProgressHUD showInfoWithStatus:@"网络错误"];
}
}];
}
+ (void)goMicRoomWithRid:(NSString *)rId withPwd:(NSString *)pwd {
[BJRoomManager goMicRoomWithRid:rId withPwd:pwd];
// if (BJFloatRoomManager.sharedBJFloatRoomManager.viewModel) {
// if ([BJFloatRoomManager.sharedBJFloatRoomManager.viewModel.roomInfo.roomId isEqualToString:rId]) {
// [BJFloatRoomManager.sharedBJFloatRoomManager reEnterSameRoom];
// return;
// }else {
// [BJFloatRoomManager.sharedBJFloatRoomManager closeFloatWindow];
// }
// }
// NSDictionary *dict = @{@"rid":C_string(rId)};
// NSMutableDictionary *paras = [NSMutableDictionary dictionary];
// [paras addEntriesFromDictionary:dict];
// if (pwd.length > 0) {
// [paras setObject:C_string(pwd) forKey:@"password"];
// }
//
// [SVProgressHUD showWithStatus:nil];
// [RCMicHTTP postWithURLString:@"/api/room/enter_room_info" parameters:paras response:^(RCMicHTTPResult *result) {
// [SVProgressHUD dismiss];
// if (result.success) {
// if (result.errorCode == 200 && [result.content isKindOfClass:NSDictionary.class]) {
//
// RCMicRoomInfo *model = [RCMicRoomInfo mj_objectWithKeyValues:result.content];
// if (model.room_status.integerValue == 1) {
//
// RCMicRoleType type = RCMicRoleType_Audience;
// if ([GVUSER.rid integerValue]==[model.roomId integerValue]) {
// //type
// type = RCMicRoleType_Host;
// }
// GVUSER.publicType = @"0";
// GVUSER.is_calculator = model.is_calculator;
// //0
// RCMicRoomViewController *next = [[RCMicRoomViewController alloc] initWithRoomInfo:model Role:type]; //退audience
// [next pushSelf];
// }else {
// [SVProgressHUD showInfoWithStatus:@"房间被封禁或关闭"];
// }
// }else {
// if (result.errorCode==202) {
// //
// Room_passRoomView *view = [[NSBundle mainBundle] loadNibNamed:@"Room_passRoomView" owner:nil options:nil].lastObject;
// [MainWindow() addSubview:view];
// view.frame = CGRectMake(0, 0, ScreenWidth, ScreenHeight);
// view.passBlock = ^(NSString * passText) {
// [UIViewController goMicRoomWithRid:rId withPwd:passText];
// };
//
// }else{
// [SVProgressHUD showInfoWithStatus:result.message];
// }
// }
// }else {
// [SVProgressHUD showInfoWithStatus:@"网络错误"];
// }
// }];
}
+ (void)goUserMainpageWith:(NSString *)userid withRid:(NSString *)rid{
SPHomepageVC *vc = [[SPHomepageVC alloc] init];
vc.userId = userid;
[vc pushSelf];
}
+ (void)goPeiwanPageWith:(NSString *)userid {
}
+ (void)goRechageCtrl {
SPWalletJinbiVC *Jinbiv = [[SPWalletJinbiVC alloc] init];
[Jinbiv pushSelf];
}
+ (void)goRankPageWithRid:(NSString *)rid{
// QQRankVC *vc = [QQRankVC new];
// vc.type = 1;
// vc.rid = rid;
// [vc pushSelf];
}
+ (void)goUserAlertWithUid:(NSString *)uid {
RCMicRoomViewController *curRoom;
for (UIViewController *each in UIViewController.currentViewController.navigationController.viewControllers) {
if ([each isKindOfClass:RCMicRoomViewController.class]) {
curRoom = (RCMicRoomViewController *)each;
break;
}
}
[curRoom onRankPopUserAlert:uid];
}
@end