TYTCitySelectedView地址组件使用

52 阅读3分钟

背景

现有的城市选择组件在车、货两端都有分别的实现,且除了传递的Type不同导致不同的布局和逻辑处理的差异,其整体的UI和总的逻辑处理大致都是相同的。所以,为了更加方便的调用和维护,我们将车货两端的城市选择功能抽成组件,为车、货以及相关组件提供功能调用。

简介

TYTCitySelectedView组件分类属于基础组件,为用户提供城市、距离以及定位的服务,封装了不同页面类型的页面布局和动画方法,开发者可以根据不同的场景进行调用。另外,如果开发者有特殊需求,在本组件没有更新的情况下,也可以根据需求自行定义界面和功能使用。

结构

1、功能划分

  • TYTAreaSelectView    : 组件封装类,所有的功能类根据不同的场景进行不同的布局和处理
  • TYTTitleView         : 顶部的提示文案的View
  • TYTAreaSelectButView : 选择的历史省市区跳转的按钮View
  • TYTCityView          : 省市区选择View
  • TYTHistoryView       : 历史记录View
  • TYTKilosView         : 距离选择View
  • TYTLocationView      : 定位View

WechatIMG70.jpg

2、资源管理

图片资源都是通过resource_bundles来管理,bundle名称TYTCitySelectedView。 调用方法如下:

    UIImageView *locationImg = [[UIImageView alloc] init];
    [locationImg setImage:[UIImage city_imageNamed:@"newarealocation"]];

API注释

//初始化数据
-(instancetype)initWithNewAreaSelBlock:(AreaSelBlock)block andType:(TYTAreaType)type frame:(CGRect)frame;

//创建内部UI调用,传递初始值和类型
 -(void)createUIWithSelectedPro:(NSString * *)proing city:(NSString* *)citying county:(NSString * *)countying kiloStr:(NSString* *)kiloStr andType:(TYTAreaType)type;

//重新选择的省市县操作
- (void)reloadNewAreaDataWithPro:(NSString * *)proing city:(NSString* *)citying county:(NSString * *)countying kiloStr:(NSString* *)kiloStr andType:(TYTAreaType)type;

//如果只有省市县拼接好的字符串则用此方法
-(void)reloadNewAreaDataWithStr:(NSString * *)ProCityCounty andType:(TYTAreaType)type;*

//找货动画:从上到下展示的动画方式,使用点:车版找货页面地址选择TYTFindGoodsStartType&TYTFindGoodsDestinationType、板车司机招聘TYTBCarInviteAndJobType、设备招聘TYTDeviceInviteType
- (void)downAnimation:(void (^ __**nullable)(BOOL finished))completion;

- (void)upAnimation:(void (^ __**nullable)(BOOL finished))completion;

//倒短动画:从上到下展示的动画,坐标和找货动画不同 使用点:范围倒短TYTFallShortRangeType、省内倒短TYTFallShortProvinceType
- (void)fallShortDownAnimation:(void (^ __**nullable)(BOOL finished))completion;

- (void)fallShortUpAnimation:(void (^ __**nullable)(BOOL finished))completion;

//查距离动画:从底部向上展示的动画方式 使用点:剩余的所有类型的Type
- (void)queryDistanceDownAnimation:(void (^ __**nullable)(BOOL finished))completion;

- (void)queryDistanceUpAnimation:(void (^ __**nullable)(BOOL finished))completion;

调用示例

TYTCitySelectedView组件是通过TYTAreaType的类型来处理内部逻辑,所以组件的调用方法都离不开TYTAreaType,下面先对它做一个简介:

typedef enum : int{

    TYTFindGoodsStartType = 1//1 找货出发地

    TYTFindGoodsDestinationType,//2 为找货目的地

    TYTSearchHistoryType,       //3 为搜索历史记录

    TYTBCarBuyType,             //4 板车购买

    TYTDeviceInviteType,        //5 设备招聘

    TYTBCarInviteAndJobType,    //6 板车司机的招聘&求职

    TYTBCarStoreFixAndPartsType,//7 板车维修商&板车配件商的附近功能

    TYTCarDistanceInviteJobDriverType,   //8 车版(car查距离&Good发货:出发地和目的地、板车司机发布招聘和求职)

    TYTBusinessInfoMessageType, //9 商户信息管理的商户添加

    TYTCarPreDestinationType,   //10为车辆偏好目的地

    TYTFallShortRangeType,      //11倒短范围倒短

    TYTFallShortProvinceType,   //12省内倒短

    TYTGoodsDistanceInviteJobDriverType, //13货版(查距离出发地和目的地、板车司机发布招聘和求职、设备司机招聘)
    
} TYTAreaType;

代码调用示例:

    //初始化组件
    newAreaView  = [[TYTAreaSelectView alloc] initWithNewAreaSelBlock:^(TYTCity cityModel, NSString *kilos, TYTAreaType type) {
    } andType:TYTBusinessInfoMessageType frame:CGRectMake(0, 0, Screen_Width, Screen_Height)];
    [newAreaView createUIWithSelectedPro:_proStr city:_cityStr  county:_countyString kiloStr:nil andType:TYTBusinessInfoMessageType];
    newAreaView.delegate = self
    [self.navigationController.view addSubview:newAreaView];
    
    //调起动画,显示地址
    [newAreaView queryDistanceUpAnimation:^(**BOOL** finished) {
    }];
    //结束动画,隐藏地址
    [newAreaView queryDistanceDownAnimation:^(**BOOL** finished) {
    }];

自定义使用

1、可单独使用的类

TYTKilosView、TYTLocationView、TYTTitleView、TYTHistoryView这四个类可以根据需求单独使用。

2、组合使用的类

如果想自定义城市选择、地址选择、城市按钮的页面,那么就需要一个新的Type,这个时候就需要根据需求,修改组件内部的Type逻辑处理,然后再进行自定义的布局和处理。