• Stars
    star
    558
  • Rank 79,819 (Top 2 %)
  • Language
    Objective-C
  • Created over 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

这是一个用 Objective-C 写的 iOS 轻量级框架,旨在快速构建 iOS App,欢迎 Star

#MACProject 传送门:https://github.com/azheng51714/MACProject

这是使用 Objective-C 整理的一套 iOS 轻量级框架,内部包含大量或自己整理或修改自网络的 Category 、Utils、DataManager、Macros & UIComponents 旨在快速构建中小型 iOS App,并尝试用其整理了个 MACProject 样例以来抛砖引玉,愿与大犇们相互学习交流,不足之处望批评指正, 更欢迎 Star。

##目录结构

基于MVC:对常用控件、常用扩展类、数据缓存、网络请求、工具类、常用动画进行封装或二次封装;

  1. 对包括 UIImageView、UILabel、UIButton、UINavgationBar、UINavgationController、UITableView、UITextView、UISearchBar、UIViewController 等在内的常用控件及其扩展类进行了整理,其中对常用的数据加载、提示语、AlertView、sheetView也进行了一键集成;

  2. 对包括 NSData、NSDate、NSString、NSArray、NSDictionary、NSNumber、NSObject 等数据类型常用的转换或解析方法进行了整理;

  3. 对包括 NSBundle、NSFile、NSFileManger 等数据读取或操作的常用方法行了整理;

  4. 对 UIFont、UIColor、UIImage、UIApplication、NSTimer 等也进行了分类整理,保证相关操作简洁高效,常用方法一键实现;

  5. 对数据下载(DownLoadManager)、网络请求(BaseService)、GCD、Animation、UserAuth 等也行了简洁的封装。

图片

这里对几个常用控件源代码进行简单的说明: 基于AF网络请求库的二次封装,根据状态码递归解析请求的加密数据;接口类型包括: 普通访问接口、带数据缓存接口、带有网络提示、带有上传文件等;

 #import <Foundation/Foundation.h>
/**
 *  HTTP访问回调
 *
 *  @param urlString 状态码 0 访问失败   200 正常  500 空 其他异常
 *  @param result    返回数据 nil 为空
 *  @param error     错误描述
 */
typedef void(^ResultBlock)(NSInteger stateCode, NSMutableArray* result, NSError *error);
//block不是self的属性或者变量时,在block内使用self也不会循环引用:

@interface BaseService : NSObject

/**
 *  普通的访问请求(有提示,带判断网络状态)
 *
 *  @param URLString    接口地址
 *  @param parameters   字典参数
 *  @param requestBlock 回调函数
 */
+ (void)POST:(NSString *)URLString  parameters:(id)parameters result:(ResultBlock)requestBlock;
/**
 *  普通的访问请求(无提示,不带判断网络状态)
 *
 *  @param URLString    接口地址
 *  @param parameters   字典参数
 *  @param requestBlock 回调函数
 */
+ (void)POSTWithNormal:(NSString *)URLString  parameters:(id)parameters result:(ResultBlock)requestBlock;

/**
 *  访问请求(有提示带缓存,带判断网络状态)
 *
 *  @param URLString    请求地址
 *  @param parameters   请求参数
 *  @param requestBlock 请求回调
 */
+ (void)POSTWithCache:(NSString *)URLString parameters:(id)parameters  completionBlock:(ResultBlock)requestBlock;

/**
 *  无提示的访问请求(带缓存,带判断网络状态)
 *
 *  @param URLString    请求地址
 *  @param parameters   请求参数
 *  @param requestBlock 请求回调
 */
+(void)POSTWithCacheNormal:(NSString *)URLString parameters:(id)parameters  completionBlock:(ResultBlock)requestBlock cacheBlock:(ResultBlock)cacheBlock;
/**
 *  上传多媒体文件接口
 *
 *  @param URLString    请求地址
 *  @param parameters   请求参数
 *  @param mediaDatas   多媒体数据  图片传 UIImage  语音传url字符串地址
 *  @param requestBlock 请求回调
 */
+(void)POSTWithFormDataURL:(NSString *)URLString parameters:(id)parameters mediaData:(NSMutableArray *)mediaDatas completionBlock:(ResultBlock)requestBlock;

同时对 UITableView 空白页文字、空白页图片、上拉下拉事件等进行了高度封装,命名为MACTableView,使用简单高效,最新版传送门: https://github.com/azheng51714/MACTableView

##首页

###仿闲鱼同城界面:

GCD、CollectionView、Xib 约束、Frame 约束、AutoLayout 代码约束简单应用,抛砖引玉;

图片

###城市模糊查询:

定位 、 KMP & SearchTree 搜索实现快速数据检索 与 系统匹配不一样的感受;

image

##朋友圈

###仿QQ通信录:

高仿QQ聊天通讯录,人员分组:

图片

高仿朋友圈 & QQ空间

图片

我的消息

图片

##云周边(暂未开放)

##发现(动画&控件)

图片

加载 Logo 动画 loadingView

加载loadView

加载 波浪 动画 MACWaveView

加载MACWaveView

基础 ChartView

加载MACWaveView

More Repositories

1

MACTableView

对 UITableView 空白页文字、空白页图片、上拉下拉事件等进行了高度封装,命名为MACTableView,使用简单高效,一键集成
Objective-C
39
star
2

iOS-SourceCode-Analysis

iOS 常用框架 源码分析
7
star
3

MACTableView-Swift

对 UITableView 空白页文字、空白页图片、上拉下拉事件等进行了高度封装,命名为MACTableView,使用简单高效,一键集成
Swift
5
star
4

BlockChainWallet

ChainWallet is committed to creating the world's best and most famous wallet SDK for iOS / Android / PC / MacOS
4
star
5

Algorithm-About-LeetCode

Golang&Swift 写点小算法
Swift
3
star
6

wechat-flutter-project

这是一个 基于flutter实现的 wechat app!
Dart
3
star
7

LogoLoadingView

一个 logo 加载界面动画
Objective-C
2
star
8

MapKit

概览 现在很多社交、电商、团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的。的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式。例如你到了一个陌生的地方想要查找附近的酒店、超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品。总之,目前地图和定位功能已经大量引入到应用开发中。今天就和大家一起看一下iOS如何进行地图和定位开发。 定位 地图 定位 要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。 定位功能 定位是一个很常用的功能,如一些地图软件打开之后如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化。要实现这个功能需要使用Core Loaction中CLLocationManager类,首先看一下这个类的一些主要方法和属性: 类方法 说明 + (BOOL)locationServicesEnabled; 是否启用定位服务,通常如果用户没有启用定位服务可以提示用户打开定位服务 + (CLAuthorizationStatus)authorizationStatus; 定位服务授权状态,返回枚举类型: kCLAuthorizationStatusNotDetermined: 用户尚未做出决定是否启用定位服务 kCLAuthorizationStatusRestricted: 没有获得用户授权使用定位服务,可能用户没有自己禁止访问授权 kCLAuthorizationStatusDenied :用户已经明确禁止应用使用定位服务或者当前系统定位服务处于关闭状态 kCLAuthorizationStatusAuthorizedAlways: 应用获得授权可以一直使用定位服务,即使应用不在使用状态 kCLAuthorizationStatusAuthorizedWhenInUse: 使用此应用过程中允许访问定位服务 属性 说明 desiredAccuracy 定位精度,枚举类型: kCLLocationAccuracyBest:最精确定位 CLLocationAccuracy kCLLocationAccuracyNearestTenMeters:十米误差范围 kCLLocationAccuracyHundredMeters:百米误差范围 kCLLocationAccuracyKilometer:千米误差范围 kCLLocationAccuracyThreeKilometers:三千米误差范围 distanceFilter 位置信息更新最小距离,只有移动大于这个距离才更新位置信息,默认为kCLDistanceFilterNone:不进行距离限制 对象方法 说明 startUpdatingLocation 开始定位追踪,开始定位后将按照用户设置的更新频率执行-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;方法反馈定位信息 stopUpdatingLocation 停止定位追踪 startUpdatingHeading 开始导航方向追踪 stopUpdatingHeading 停止导航方向追踪 startMonitoringForRegion: 开始对某个区域进行定位追踪,开始对某个区域进行定位后。如果用户进入或者走出某个区域会调用- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region和- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region代理方法反馈相关信息 stopMonitoringForRegion: 停止对某个区域进行定位追踪 requestWhenInUseAuthorization 请求获得应用使用时的定位服务授权,注意使用此方法前在要在info.plist中配置NSLocationWhenInUseUsageDescription requestAlwaysAuthorization 请求获得应用一直使用定位服务授权,注意使用此方法前要在info.plist中配置NSLocationAlwaysUsageDescription 代理方法 说明 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations; 位置发生改变后执行(第一次定位到某个位置之后也会执行) - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading; 导航方向发生变化后执行 - (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 进入某个区域之后执行 - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region 走出某个区域之后执行
2
star
9

PYLearning

PYLearning
Python
2
star
10

structKit

项目框架,移植到最新MACProject
Objective-C
2
star
11

SwiftLanguageGuide

iOSLanguageGuide
Swift
1
star
12

JubSdkAndroid

JubSdkAndroid
C++
1
star
13

BlockChainLearning

Blockchain 区块链中文学习资料
1
star
14

Flutter_learning

Flutter learning
Dart
1
star