提交
This commit is contained in:
35
SweetParty/Expand/Category/BaseUIStyle.h
Executable file
35
SweetParty/Expand/Category/BaseUIStyle.h
Executable 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
|
||||
80
SweetParty/Expand/Category/BaseUIStyle.m
Executable file
80
SweetParty/Expand/Category/BaseUIStyle.m
Executable 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
|
||||
18
SweetParty/Expand/Category/CALayer+Extension.h
Executable file
18
SweetParty/Expand/Category/CALayer+Extension.h
Executable 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
|
||||
22
SweetParty/Expand/Category/CALayer+Extension.m
Executable file
22
SweetParty/Expand/Category/CALayer+Extension.m
Executable 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
|
||||
39
SweetParty/Expand/Category/ControlCreator.h
Executable file
39
SweetParty/Expand/Category/ControlCreator.h
Executable 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
|
||||
319
SweetParty/Expand/Category/ControlCreator.m
Executable file
319
SweetParty/Expand/Category/ControlCreator.m
Executable 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
|
||||
139
SweetParty/Expand/Category/MBProgressHUD+SUP.h
Executable file
139
SweetParty/Expand/Category/MBProgressHUD+SUP.h
Executable 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
|
||||
145
SweetParty/Expand/Category/MBProgressHUD+SUP.m
Executable file
145
SweetParty/Expand/Category/MBProgressHUD+SUP.m
Executable 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
|
||||
17
SweetParty/Expand/Category/MHChatTableView.h
Executable file
17
SweetParty/Expand/Category/MHChatTableView.h
Executable 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
|
||||
25
SweetParty/Expand/Category/MHChatTableView.m
Executable file
25
SweetParty/Expand/Category/MHChatTableView.m
Executable 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
|
||||
31
SweetParty/Expand/Category/NSDate+Extension.h
Executable file
31
SweetParty/Expand/Category/NSDate+Extension.h
Executable 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
|
||||
86
SweetParty/Expand/Category/NSDate+Extension.m
Executable file
86
SweetParty/Expand/Category/NSDate+Extension.m
Executable 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
|
||||
22
SweetParty/Expand/Category/NSString+Mobile.h
Executable file
22
SweetParty/Expand/Category/NSString+Mobile.h
Executable 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
|
||||
87
SweetParty/Expand/Category/NSString+Mobile.m
Executable file
87
SweetParty/Expand/Category/NSString+Mobile.m
Executable 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
|
||||
26
SweetParty/Expand/Category/NSString+String.h
Executable file
26
SweetParty/Expand/Category/NSString+String.h
Executable 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
|
||||
51
SweetParty/Expand/Category/NSString+String.m
Executable file
51
SweetParty/Expand/Category/NSString+String.m
Executable 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
|
||||
38
SweetParty/Expand/Category/UIButton+Badge.h
Executable file
38
SweetParty/Expand/Category/UIButton+Badge.h
Executable 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
|
||||
281
SweetParty/Expand/Category/UIButton+Badge.m
Executable file
281
SweetParty/Expand/Category/UIButton+Badge.m
Executable 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
|
||||
14
SweetParty/Expand/Category/UIButton+HXExtension.h
Executable file
14
SweetParty/Expand/Category/UIButton+HXExtension.h
Executable 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
|
||||
53
SweetParty/Expand/Category/UIButton+HXExtension.m
Executable file
53
SweetParty/Expand/Category/UIButton+HXExtension.m
Executable 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
|
||||
36
SweetParty/Expand/Category/UIImage+Additions.h
Executable file
36
SweetParty/Expand/Category/UIImage+Additions.h
Executable 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
|
||||
172
SweetParty/Expand/Category/UIImage+Additions.m
Executable file
172
SweetParty/Expand/Category/UIImage+Additions.m
Executable 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
|
||||
17
SweetParty/Expand/Category/UIImage+ImgSize.h
Executable file
17
SweetParty/Expand/Category/UIImage+ImgSize.h
Executable 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
|
||||
86
SweetParty/Expand/Category/UIImage+ImgSize.m
Executable file
86
SweetParty/Expand/Category/UIImage+ImgSize.m
Executable 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);
|
||||
|
||||
//以下是对手机32位、64位的处理
|
||||
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
|
||||
19
SweetParty/Expand/Category/UISearchBar+custom.h
Executable file
19
SweetParty/Expand/Category/UISearchBar+custom.h
Executable 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
|
||||
28
SweetParty/Expand/Category/UISearchBar+custom.m
Executable file
28
SweetParty/Expand/Category/UISearchBar+custom.m
Executable 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
|
||||
20
SweetParty/Expand/Category/UITabBar+Badge.h
Executable file
20
SweetParty/Expand/Category/UITabBar+Badge.h
Executable 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
|
||||
85
SweetParty/Expand/Category/UITabBar+Badge.m
Executable file
85
SweetParty/Expand/Category/UITabBar+Badge.m
Executable 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
|
||||
28
SweetParty/Expand/Category/UITableViewCell+CSCellShadows.h
Executable file
28
SweetParty/Expand/Category/UITableViewCell+CSCellShadows.h
Executable 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
|
||||
182
SweetParty/Expand/Category/UITableViewCell+CSCellShadows.m
Executable file
182
SweetParty/Expand/Category/UITableViewCell+CSCellShadows.m
Executable 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();
|
||||
// 获取cell的size
|
||||
// 第一个参数,是整个 cell 的 bounds, 第二个参数是距左右两端的距离,第三个参数是距上下两端的距离
|
||||
CGRect bounds = CGRectInset(self.bounds, 10, 0);
|
||||
// CGRectGetMinY:返回对象顶点坐标
|
||||
// CGRectGetMaxY:返回对象底点坐标
|
||||
// CGRectGetMinX:返回对象左边缘坐标
|
||||
// CGRectGetMaxX:返回对象右边缘坐标
|
||||
// CGRectGetMidX: 返回对象中心点的X坐标
|
||||
// CGRectGetMidY: 返回对象中心点的Y坐标
|
||||
|
||||
// 这里要判断分组列表中的第一行,每组section的第一行,每组section的中间行
|
||||
|
||||
// CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);
|
||||
|
||||
// 起始坐标为左下角,设为p,(CGRectGetMinX(bounds), CGRectGetMinY(bounds))为左上角的点,设为p1(x1,y1),(CGRectGetMidX(bounds), CGRectGetMinY(bounds))为顶部中点的点,设为p2(x2,y2)。然后连接p1和p2为一条直线l1,连接初始点p到p1成一条直线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 {
|
||||
|
||||
// 添加cell的rectangle信息到path中(不包括圆角)
|
||||
CGPathAddRect(pathRef, nil, bounds);
|
||||
}
|
||||
|
||||
|
||||
// 把已经绘制好的可变图像路径赋值给图层,然后图层根据这图像path进行图像渲染render
|
||||
layer.path = pathRef;
|
||||
backgroundLayer.path = pathRef;
|
||||
// 注意:但凡通过Quartz2D中带有creat/copy/retain方法创建出来的值都必须要释放
|
||||
CFRelease(pathRef);
|
||||
// 按照shape layer的path填充颜色,类似于渲染render
|
||||
// layer.fillColor = [UIColor colorWithWhite:1.f alpha:0.8f].CGColor;
|
||||
layer.fillColor = [UIColor whiteColor].CGColor;
|
||||
|
||||
|
||||
|
||||
// view大小与cell一致
|
||||
UIView *roundView = [[UIView alloc] initWithFrame:bounds];
|
||||
// 添加自定义圆角后的图层到roundView中
|
||||
[roundView.layer insertSublayer:layer atIndex:0];
|
||||
roundView.backgroundColor = UIColor.clearColor;
|
||||
// cell的背景view
|
||||
self.backgroundView = roundView;
|
||||
}
|
||||
@end
|
||||
22
SweetParty/Expand/Category/UITextView+Placeholder.h
Executable file
22
SweetParty/Expand/Category/UITextView+Placeholder.h
Executable 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
|
||||
192
SweetParty/Expand/Category/UITextView+Placeholder.m
Executable file
192
SweetParty/Expand/Category/UITextView+Placeholder.m
Executable 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
|
||||
16
SweetParty/Expand/Category/UIView+Border.h
Executable file
16
SweetParty/Expand/Category/UIView+Border.h
Executable 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
|
||||
29
SweetParty/Expand/Category/UIView+Border.m
Executable file
29
SweetParty/Expand/Category/UIView+Border.m
Executable 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
|
||||
15
SweetParty/Expand/Category/UIView+CornerRadius.h
Executable file
15
SweetParty/Expand/Category/UIView+CornerRadius.h
Executable 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
|
||||
21
SweetParty/Expand/Category/UIView+CornerRadius.m
Executable file
21
SweetParty/Expand/Category/UIView+CornerRadius.m
Executable 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
|
||||
14
SweetParty/Expand/Category/UIView+GDRotate.h
Executable file
14
SweetParty/Expand/Category/UIView+GDRotate.h
Executable 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
|
||||
20
SweetParty/Expand/Category/UIView+GDRotate.m
Executable file
20
SweetParty/Expand/Category/UIView+GDRotate.m
Executable 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
|
||||
16
SweetParty/Expand/Category/UIView+TapBlock.h
Executable file
16
SweetParty/Expand/Category/UIView+TapBlock.h
Executable 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
|
||||
46
SweetParty/Expand/Category/UIView+TapBlock.m
Executable file
46
SweetParty/Expand/Category/UIView+TapBlock.m
Executable 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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
15
SweetParty/Expand/Category/UIViewController+CurViewController.h
Executable file
15
SweetParty/Expand/Category/UIViewController+CurViewController.h
Executable 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
|
||||
64
SweetParty/Expand/Category/UIViewController+CurViewController.m
Executable file
64
SweetParty/Expand/Category/UIViewController+CurViewController.m
Executable 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
|
||||
34
SweetParty/Expand/Category/ViewFrameGeometry.h
Executable file
34
SweetParty/Expand/Category/ViewFrameGeometry.h
Executable 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
|
||||
194
SweetParty/Expand/Category/ViewFrameGeometry.m
Executable file
194
SweetParty/Expand/Category/ViewFrameGeometry.m
Executable 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
|
||||
53
SweetParty/Expand/Category/ZJUIUtil.h
Executable file
53
SweetParty/Expand/Category/ZJUIUtil.h
Executable 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
|
||||
294
SweetParty/Expand/Category/ZJUIUtil.m
Executable file
294
SweetParty/Expand/Category/ZJUIUtil.m
Executable 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
|
||||
|
||||
27
SweetParty/Expand/Category/ZWTimer.h
Executable file
27
SweetParty/Expand/Category/ZWTimer.h
Executable 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
|
||||
102
SweetParty/Expand/Category/ZWTimer.m
Executable file
102
SweetParty/Expand/Category/ZWTimer.m
Executable 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_t本质还是个OC对象)
|
||||
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
|
||||
18
SweetParty/Expand/Category/wheelView.h
Executable file
18
SweetParty/Expand/Category/wheelView.h
Executable 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
|
||||
198
SweetParty/Expand/Category/wheelView.m
Executable file
198
SweetParty/Expand/Category/wheelView.m
Executable 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();
|
||||
}
|
||||
}
|
||||
//给指定的view设置image
|
||||
- (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
|
||||
27
SweetParty/Expand/Category/按钮渐变/UIButton+Gradient.h
Executable file
27
SweetParty/Expand/Category/按钮渐变/UIButton+Gradient.h
Executable 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
|
||||
26
SweetParty/Expand/Category/按钮渐变/UIButton+Gradient.m
Executable file
26
SweetParty/Expand/Category/按钮渐变/UIButton+Gradient.m
Executable 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
|
||||
29
SweetParty/Expand/Category/按钮渐变/UIImage+Gradient.h
Executable file
29
SweetParty/Expand/Category/按钮渐变/UIImage+Gradient.h
Executable 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
|
||||
66
SweetParty/Expand/Category/按钮渐变/UIImage+Gradient.m
Executable file
66
SweetParty/Expand/Category/按钮渐变/UIImage+Gradient.m
Executable 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
|
||||
19
SweetParty/Expand/Category/文字渐变/GradientLabel.h
Executable file
19
SweetParty/Expand/Category/文字渐变/GradientLabel.h
Executable 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
|
||||
66
SweetParty/Expand/Category/文字渐变/GradientLabel.m
Executable file
66
SweetParty/Expand/Category/文字渐变/GradientLabel.m
Executable 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
|
||||
|
||||
325
SweetParty/Expand/NetWork/BJHttpTool.h
Executable file
325
SweetParty/Expand/NetWork/BJHttpTool.h
Executable 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
|
||||
792
SweetParty/Expand/NetWork/BJHttpTool.m
Executable file
792
SweetParty/Expand/NetWork/BJHttpTool.m
Executable 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
|
||||
384
SweetParty/Expand/NetWork/HttpTool.h
Executable file
384
SweetParty/Expand/NetWork/HttpTool.h
Executable 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_type,1表示礼物收入,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
|
||||
956
SweetParty/Expand/NetWork/HttpTool.m
Executable file
956
SweetParty/Expand/NetWork/HttpTool.m
Executable 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 1点赞2收藏3转发4评论5关注
|
||||
*/
|
||||
+ (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_type,1表示礼物收入,2表示赠送的礼物记录
|
||||
//gift_type 1,吖币礼物,2,背包礼物
|
||||
+ (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星锐,金锐等级说明2vip等级说明3平台协议
|
||||
+ (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
|
||||
285
SweetParty/Expand/NetWork/MLNetWorkHelper.h
Executable file
285
SweetParty/Expand/NetWork/MLNetWorkHelper.h
Executable 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
|
||||
529
SweetParty/Expand/NetWork/MLNetWorkHelper.m
Executable file
529
SweetParty/Expand/NetWork/MLNetWorkHelper.m
Executable 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) {
|
||||
// 默认图片的文件名, 若fileNames为nil就使用
|
||||
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);
|
||||
// 默认图片的文件名, 若fileNames为nil就使用
|
||||
|
||||
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);
|
||||
// 默认图片的文件名, 若fileNames为nil就使用
|
||||
|
||||
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];
|
||||
}
|
||||
/**
|
||||
* 所有的HTTP请求共享一个AFHTTPSessionManager
|
||||
* 原理参考地址: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的分类
|
||||
/*
|
||||
************************************************************************************
|
||||
*新建NSDictionary与NSArray的分类, 控制台打印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
|
||||
42
SweetParty/Expand/NetWork/MLNetworkCache.h
Executable file
42
SweetParty/Expand/NetWork/MLNetworkCache.h
Executable 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
|
||||
51
SweetParty/Expand/NetWork/MLNetworkCache.m
Executable file
51
SweetParty/Expand/NetWork/MLNetworkCache.m
Executable 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
|
||||
78
SweetParty/Expand/UserData/BJUserManager.h
Executable file
78
SweetParty/Expand/UserData/BJUserManager.h
Executable 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
|
||||
|
||||
91
SweetParty/Expand/UserData/BJUserManager.m
Executable file
91
SweetParty/Expand/UserData/BJUserManager.m
Executable 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
|
||||
121
SweetParty/Expand/UserData/MLRoomInformationModel.h
Executable file
121
SweetParty/Expand/UserData/MLRoomInformationModel.h
Executable 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
|
||||
|
||||
|
||||
|
||||
97
SweetParty/Expand/UserData/MLRoomInformationModel.m
Executable file
97
SweetParty/Expand/UserData/MLRoomInformationModel.m
Executable 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:这个目录下有两个子目录,可创建子文件夹。可以用来放置您希望被备份但不希望被用户看到的数据。该路径下的文件夹,除Caches以外,都会被iTunes备份.
|
||||
|
||||
Library/Caches: 保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。
|
||||
Library/Preferences: 保存应用程序的偏好设置文件。NSUserDefaults类创建的数据和plist文件都放在这里。会被iTunes备份。
|
||||
|
||||
@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
|
||||
61
SweetParty/Expand/YBKit/CustomNavigationView.h
Executable file
61
SweetParty/Expand/YBKit/CustomNavigationView.h
Executable 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
|
||||
302
SweetParty/Expand/YBKit/CustomNavigationView.m
Executable file
302
SweetParty/Expand/YBKit/CustomNavigationView.m
Executable 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
|
||||
229
SweetParty/Expand/YBKit/FZYControl.h
Executable file
229
SweetParty/Expand/YBKit/FZYControl.h
Executable 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
|
||||
761
SweetParty/Expand/YBKit/FZYControl.m
Executable file
761
SweetParty/Expand/YBKit/FZYControl.m
Executable 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];
|
||||
//zzz表示时区,zzz可以删除,这样返回的日期字符将不包含时区信息。
|
||||
[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最大值的大小,使用系统14号字,返回一个真实的frame 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
|
||||
49
SweetParty/Expand/YBKit/GVUserDefaults+APP.h
Executable file
49
SweetParty/Expand/YBKit/GVUserDefaults+APP.h
Executable 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
|
||||
34
SweetParty/Expand/YBKit/GVUserDefaults+APP.m
Executable file
34
SweetParty/Expand/YBKit/GVUserDefaults+APP.m
Executable 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
|
||||
31
SweetParty/Expand/YBKit/NSDictionary+SafeObject.h
Executable file
31
SweetParty/Expand/YBKit/NSDictionary+SafeObject.h
Executable 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
|
||||
168
SweetParty/Expand/YBKit/NSDictionary+SafeObject.m
Executable file
168
SweetParty/Expand/YBKit/NSDictionary+SafeObject.m
Executable 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(@"(string)key非法");
|
||||
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(@"(bool)key非法");
|
||||
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(@"(float)key非法");
|
||||
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(@"(url)key非法");
|
||||
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(@"(array)key非法");
|
||||
return @[];
|
||||
}
|
||||
|
||||
NSArray *value = [self objectForKey:key];
|
||||
if ((value != nil) && [value isKindOfClass:[NSArray class]]) {
|
||||
return value;
|
||||
}
|
||||
return @[];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
96
SweetParty/Expand/YBKit/UIColor+Category.h
Executable file
96
SweetParty/Expand/YBKit/UIColor+Category.h
Executable 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
|
||||
141
SweetParty/Expand/YBKit/UIColor+Category.m
Executable file
141
SweetParty/Expand/YBKit/UIColor+Category.m
Executable 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
|
||||
24
SweetParty/Expand/YBKit/UIImage+UploadImage.h
Executable file
24
SweetParty/Expand/YBKit/UIImage+UploadImage.h
Executable 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
|
||||
67
SweetParty/Expand/YBKit/UIImage+UploadImage.m
Executable file
67
SweetParty/Expand/YBKit/UIImage+UploadImage.m
Executable 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
|
||||
21
SweetParty/Expand/YBKit/UIView+EasyTouch.h
Executable file
21
SweetParty/Expand/YBKit/UIView+EasyTouch.h
Executable 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
|
||||
39
SweetParty/Expand/YBKit/UIView+EasyTouch.m
Executable file
39
SweetParty/Expand/YBKit/UIView+EasyTouch.m
Executable 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
|
||||
38
SweetParty/Expand/YBKit/UIView+YBUtil.h
Executable file
38
SweetParty/Expand/YBKit/UIView+YBUtil.h
Executable 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
|
||||
73
SweetParty/Expand/YBKit/UIView+YBUtil.m
Executable file
73
SweetParty/Expand/YBKit/UIView+YBUtil.m
Executable 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 {
|
||||
// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了,关键就是第三个参数 [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
|
||||
20
SweetParty/Expand/YBKit/UIViewController+BMNavigationView.h
Executable file
20
SweetParty/Expand/YBKit/UIViewController+BMNavigationView.h
Executable 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
|
||||
35
SweetParty/Expand/YBKit/UIViewController+BMNavigationView.m
Executable file
35
SweetParty/Expand/YBKit/UIViewController+BMNavigationView.m
Executable 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
|
||||
61
SweetParty/Expand/YBKit/UIViewController+PushUtils.h
Executable file
61
SweetParty/Expand/YBKit/UIViewController+PushUtils.h
Executable 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
|
||||
207
SweetParty/Expand/YBKit/UIViewController+PushUtils.m
Executable file
207
SweetParty/Expand/YBKit/UIViewController+PushUtils.m
Executable 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
|
||||
Reference in New Issue
Block a user