iOS天气插件

版本和更新

版本号 更新日期 获取密钥和下载
1.0 2019-06-11 下载

适配版本

iOS 9.0 及以上

1.工程配置

手动安装

  • 1.1 将HeWeather_Plugin.frameWork拖入到工程中
  • 1.2 info.plist添加Allow Arbitrary Loads元素,同时设为 YES
  • 1.3 本项目依赖于 ‘SDWebImage’ ‘Masonry’请确保您的项目中已经安装这两个类库
  • 1.4 sdk需要开启定位权限,请在工程plist.info文件中添加NSLocationAlwaysAndWhenInUseUsageDescription和NSLocationWhenInUseUsageDescription

2.调用说明

2.1 在所需位置引入头文件

#import <HeWeather_Plugin/HeWeather_Plugin.h>

2.2 示例代码

- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = HeFengColorFromRGB(0x1D1E1F);
[self setHeFengPluginViewTypeHorizontal];
[self setHeFengPluginViewTypeLeftLarge];
[self setHeFengPluginViewTypeRightLarge];
[self setHeFengPluginViewTypeVertical];

}
//显示横向单排
-(void)setHeFengPluginViewTypeHorizontal{
[self showViewWithFrame:CGRectMake(0, [[UIApplication sharedApplication] statusBarFrame].size.height + 44.f, self.view.frame.size.width, 20) Type:HeFengPluginViewTypeHorizontal typeArray:
@[@(HeFengConfigModelTypeLocation),
@(HeFengConfigModelTypeAlarmIcon),
@(HeFengConfigModelTypeAlarm),
@(HeFengConfigModelTypeTemp),
@(HeFengConfigModelTypeWeatherStateIcon),
@(HeFengConfigModelTypeWeatherState),
@(HeFengConfigModelTypeWindDirIcon),
@(HeFengConfigModelTypeWindSC),
@(HeFengConfigModelTypeAqiTitle),
@(HeFengConfigModelTypeQlty),
@(HeFengConfigModelTypeAqi),
@(HeFengConfigModelTypePcpnIcon),
@(HeFengConfigModelTypePcpn),
]];
}
//显示左侧大布局右侧双布局
-(void)setHeFengPluginViewTypeLeftLarge{
[self showViewWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 40) Type:HeFengPluginViewTypeLeftLarge typeArray:
@[
//第一个数组内元素会被放在左边大布局上
@[@(HeFengConfigModelTypeWeatherStateIcon)],
//第二个数组内元素会被放在右边上部分布局上
@[@(HeFengConfigModelTypeTemp),
@(HeFengConfigModelTypeAlarmIcon),
@(HeFengConfigModelTypeAlarm),
@(HeFengConfigModelTypeAqiTitle),
@(HeFengConfigModelTypeQlty),
@(HeFengConfigModelTypeAqi),
@(HeFengConfigModelTypeLocation)],
//第三个数组内元素会被放在右边下部分布局上
@[@(HeFengConfigModelTypeWeatherState),
@(HeFengConfigModelTypeWindDirIcon),
@(HeFengConfigModelTypeWindSC),
@(HeFengConfigModelTypePcpnIcon),
@(HeFengConfigModelTypePcpn)]]];
}
//显示右侧大布局左侧双布局
-(void)setHeFengPluginViewTypeRightLarge{
[self showViewWithFrame:CGRectMake(0, 300, self.view.frame.size.width, 40) Type:HeFengPluginViewTypeRightLarge typeArray:
@[
//第一个数组内元素会被放在右边大布局上
@[@(HeFengConfigModelTypeTemp)],
//第二个数组内元素会被放在左边上部分布局上
@[
@(HeFengConfigModelTypeLocation),
@(HeFengConfigModelTypeAqiTitle),
@(HeFengConfigModelTypeQlty),
@(HeFengConfigModelTypeAqi),
@(HeFengConfigModelTypeAlarmIcon),
@(HeFengConfigModelTypeAlarm),
@(HeFengConfigModelTypeWeatherStateIcon)],
//第三个数组内元素会被放在左边下部分布局上
@[
@(HeFengConfigModelTypePcpnIcon),
@(HeFengConfigModelTypePcpn),
@(HeFengConfigModelTypeWindDirIcon),
@(HeFengConfigModelTypeWindSC),
@(HeFengConfigModelTypeWeatherState)]
]];
}
//显示竖向单排布局
-(void)setHeFengPluginViewTypeVertical{
[self showViewWithFrame:CGRectMake(0, 400, 50, 300) Type:HeFengPluginViewTypeVertical typeArray:@[@(HeFengConfigModelTypeLocation),
@(HeFengConfigModelTypeTemp),
@(HeFengConfigModelTypeWeatherStateIcon),
@(HeFengConfigModelTypeWeatherState),
@(HeFengConfigModelTypeWindDirIcon),
@(HeFengConfigModelTypeWindSC),
@(HeFengConfigModelTypeAqiTitle),
@(HeFengConfigModelTypeQlty),
@(HeFengConfigModelTypeAqi),
@(HeFengConfigModelTypeAlarmIcon),
@(HeFengConfigModelTypeAlarm),
@(HeFengConfigModelTypePcpnIcon),
@(HeFengConfigModelTypePcpn),
]];

}
-(void)showViewWithFrame:(CGRect)frame Type:(HeFengPluginViewType)type typeArray:(NSArray *)typeArray{

//初始化视图
HeFengPluginView *view = [[HeFengPluginView alloc] initWithFrame:frame ViewType:type UserKey:@"用户KEY" Location:@"北京"];

//视图属性设置
NSMutableArray *configarray = [NSMutableArray array];
[typeArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSMutableArray *modelarray = [NSMutableArray array];
if ([obj isKindOfClass:[NSArray class]]) {
[obj enumerateObjectsUsingBlock:^(id _Nonnull arrayobj, NSUInteger idx, BOOL * _Nonnull stop) {
HeFengConfigModel *model = [HeFengConfigModel new];
if (idx==0&&[arrayobj integerValue]==HeFengConfigModelTypeTemp&&[obj count]==1) {
model.textFont = [UIFont systemFontOfSize:40];
}
if (idx==0&&[arrayobj integerValue]==HeFengConfigModelTypeWeatherStateIcon&&[obj count]==1) {
model.iconSize = 32;
}
model.type = [arrayobj integerValue];
model.padding =type==HeFengPluginViewTypeVertical? UIEdgeInsetsMake(8, 4, 8, 4):UIEdgeInsetsMake(4, 8, 4, 8);
[modelarray addObject:model];
}];
[configarray addObject:modelarray];
}else{
HeFengConfigModel *model = [HeFengConfigModel new];
model.type = [obj integerValue];
model.padding =type==HeFengPluginViewTypeVertical? UIEdgeInsetsMake(8, 4, 8, 4):UIEdgeInsetsMake(4, 8, 4, 8);
[configarray addObject:model];
}
}];
//配置子元素排列顺序和属性
view.configArray = configarray;
view.contentViewAlignmen = HeFengContentViewAlignmentCenter;
//配置主题样式
view.themType = HeFengPluginViewThemeTypeAuto;
//配置视图内间距
view.padding = UIEdgeInsetsZero;
//配置视图背景颜色
view.backgroundColor = HeFengColorFromRGB(0xFAFAFA);
//自定义视图背景图片
view.backgroundImageTitle = @"";
//配置边框颜色
view.borderColor = [UIColor greenColor];
//配置边框宽度
view.borderWidth =2;
//配置圆角
view.cornerRadius = 2;
//是否显示边框
view.isShowBorder = NO;
//是否显示圆角
view.isShowConer = NO;
//拖拽设置
view.dragEnable = YES;
//拖拽范围
view.freeRect = self.view.frame;
//拖拽方向
view.dragDirection = HeFengPluginViewDragDirectionAny;
//是否粘边
view.isKeepBounds = YES;
//设置导航栏背景色
view.navigationBarBackgroundColor = [UIColor redColor];
//设置导航栏进度条背景色
view.progressColor = [UIColor blueColor];
//设置导航栏返回按钮图片
view.navBarBackImage = [UIImage imageNamed:@""];
//设置导航栏关闭图片
view.navBarCloseImage = [UIImage imageNamed:@""];
//添加视图到view上
[self.view addSubview:view];
}

3.属性方法参照

3.1 类初始化方法

/**
@param frame 视图frame
@param type 浮窗样式枚举
@param userKey 用户key 必填
@param location 城市或地区,可输入以下值:
1. 城市ID:城市列表
2. 经纬度格式:经度,纬度(经度在前纬度在后,英文,分隔,十进制格式,北纬东经为正,南纬西经为负
3. 城市名称,支持中英文和汉语拼音
4. 城市名称,上级城市 或 省 或 国家,英文,分隔,此方式可以在重名的情况下只获取想要的地区的天气数据,例如 西安,陕西
5. IP
6. 根据请求自动判断,根据用户的请求获取IP,通过 IP 定位并获取城市数据
7. 可为空,系统自动获取当前设备所在经纬度,然后将获取到的经纬度作为location参数调用传location的接口
@return HeFengPluginView 插件视图
*/
+(instancetype)initWithFrame:(CGRect)frame ViewType:(HeFengPluginViewType)type UserKey:(NSString *)userKey Location:(NSString *)location;

/**
@param frame 视图frame
@param type 浮窗样式枚举
@param userKey 用户key 必填
@param location 城市或地区,可输入以下值:
1. 城市ID:城市列表
2. 经纬度格式:经度,纬度(经度在前纬度在后,英文,分隔,十进制格式,北纬东经为正,南纬西经为负
3. 可为空,系统自动获取当前设备所在经纬度,然后将获取到的经纬度作为location参数调用传location的接口
@return HeFengPluginView 插件视图
*/
-(instancetype)initWithFrame:(CGRect)frame ViewType:(HeFengPluginViewType)type UserKey:(NSString *)userKey Location:(NSString *)location;

3.1.1 HeFengPluginViewType说明

枚举 布局样式  
HeFengPluginViewTypeHorizontal 横向水平  
HeFengPluginViewTypeLeftLarge 横向三块布局 单独大布局在左  
HeFengPluginViewTypeRightLarge 横向三块布局 单独大布局在右  
HeFengPluginViewTypeVertical 垂直布局  

3.1.2 location参数说明

权限说明 代码
不传递地址参数 自动采用iOS原生定位
城市ID:城市列表 location=CN101010100
经纬度格式:经度,纬度(经度在前,纬度在后英文,分隔,十进制格式,北纬东经为正,南纬西经为负 location=116.40,39.9
城市名称,城市列表 location=北京、 location=北京市、 location=beijing
城市名称,上级城市 或 省 或 国家,英文逗号分隔,此方式可以在重名的情况下只获取想要的地区的天气数据,例如 西安,陕西 location=朝阳,北京、 location=chaoyang,beijing
IP location=60.194.130.1
根据请求自动判断,根据用户的请求获取IP,通过 IP 定位并获取城市数据 location=auto_ip(固定参数)

3.2 属性介绍

属性 说明 类型 默认
configArray 视图属性配置数组 NSArray  
contentViewAlignmen 内容水平方向显示对齐方式 HeFengContentViewAlignment(枚举类型) HeFengContentViewAlignmentCenter
themType 主题样式 HeFengPluginViewThemeType(枚举类型) 无 背景颜色透明
padding HeFengPluginView的内边距 UIEdgeInsets UIEdgeInsetsZero
backgroundColor 视图背景颜色 UIColor [UIColor clearColor]
backgroundImageTitle 自定义视图背景图片标题:当themType的值为HeFengPluginViewThemeTypeAuto时设置有效,图片命名规则为白天xxx_code_d,夜晚xxx_code_n 其中code参看和风天气状况代码 传入xxx前缀即可    
  NSString  
borderColor 边框颜色 UIColor #F5F5F5
borderWidth 边框宽度 CGFloat 2.0
cornerRadius 圆角 CGFloat 4.0
isShowBorder 是否显示边框 BOOL YES
isShowConer 是否显示圆角 BOOL YES
dragEnable 是不是能拖曳 BOOL NO
freeRect 拖拽范围 CGRect
dragDirection 拖拽的方向 HeFengPluginViewDragDirection(枚举类型) HeFengPluginViewDragDirectionAny
isKeepBounds 黏贴边界效果 BOOL NO
navigationBarBackgroundColor 导航条背景颜色 UIColor [UIColor colorWithRed:6.0/225 green:79.0/225 blue:171.0/225 alpha:1]]
progressColor 进度条颜色 UIColor [UIColor greenColor]
navBarBackImage 导航栏返回按钮 UIImage 使用自带图片
navBarCloseImage 导航栏关闭图片 UIImage 使用自带图片
loadCompleted 加载完数据后的回调返回视图自适应size HeFengPluginViewLoadCompleted

3.2.1 configArray

  • 此数组用于配置插件内部视图属性如字体,字色等,数组内部可装HeFengConfigModel,也可以嵌套HeFengConfigModel数组用于多个子布局视图的情况。数组添加的顺序决定了控件摆放的顺序。
  • 当视图类型为HeFengPluginViewTypeLeftLarge时,configArray[0]内元素会被放在左边大布局上, configArray[1]内元素会被放在右边上部分布局上, configArray[2]内元素会被放在右边下部分布局上
  • 当视图类型为HeFengPluginViewTypeRightLarge时,configArray[0]内元素会被放在右边大布局上, configArray[1]内元素会被放在左边上部分布局上, configArray[2]内元素会被放在左边下部分布局上
  • 以下是对HeFengConfigModel各个属性的说明。
属性 说明 类型 默认
textFont 文字大小,设置范围6-36 UIFont 12
textAlignment 文字对齐样式 NSTextAlignment NSTextAlignmentCenter
textColor 文字颜色 UIColor #4a4a4a
airTextColorArray 空气质量颜色数组只对 HeFengConfigModelTypeQlty HeFengConfigModelTypeAqi类型有效 数组按顺序存放颜色,对应的顺序为优、良、轻度、中度、重度、严重, 六个等级都要设置才有效否则使用默认 NSArray< UIColor*> 自带颜色数组
alarmTextColorArray 预警文字颜色数组只对 HeFengConfigModelTypeAlarm类型有效 数组按顺序存放颜色,对应的顺序为白色、蓝色、黄色、橙色、红色, 五个等级都要设置才有效否则使用默认 NSArray< UIColor*> 自带颜色数组
iconSize 天气状况图片大小,可调范围6-32 CGFloat 12
iconImageTitle 自定义图标名:1.自定义天气状况图标名:图片命名规则为白天xxx_code_d,夜晚xxx_code_n 其中code参看风天气状况代码 传入xxx前缀即可 2.自定义湿度图片:直接使用图片名 3.自定义风向图片:图片命名规范为xxx_wind_nodirection(无持续风向图标),xxx_wind_rotate(旋转风图标),xxx_wind_normal(普通风向图标,图片指向北方即可,内部做了旋转处理),传入前缀xxx即可 NSString 无,使用默认图片
type 配置样式的控件类型 HeFengConfigModelType HeFengConfigModelTypeLocation
padding 子视图与父视图和其他子视图的边距、间距,遵从线性布局 比如横向布局第二个控件距离第一个控件的间距为第二个控件的padding.left,第一个控件的padding.right无效。纵向布局则第二个控件间距第一个控件的底部距离为第二个控件的padding.top,第一个控件的padding.bottom无效 UIEdgeInsets UIEdgeInsetsMake(2, 5, 2, 5)

HeFengConfigModelType

枚举 说明  
HeFengConfigModelTypeLocation 所在城市名称  
HeFengConfigModelTypeTemp 温度  
HeFengConfigModelTypeWeatherState 天气状况文字  
HeFengConfigModelTypeWeatherStateIcon 天气状况图标  
HeFengConfigModelTypeWindSC 风力  
HeFengConfigModelTypeWindDirIcon 风向图标  
HeFengConfigModelTypeAlarmIcon 灾害预警图标  
HeFengConfigModelTypeAlarm 灾害预警  
HeFengConfigModelTypePcpnIcon 分钟降雨图标  
HeFengConfigModelTypePcpn 分钟降雨  
HeFengConfigModelTypeAqiTitle 空气质量文字标题:AQI  
HeFengConfigModelTypeQlty 空气质量等级  
HeFengConfigModelTypeAqi 空气质量  

3.2.2 HeFengContentViewAlignment

枚举 插件内容水平方向显示对齐方式
HeFengContentViewAlignmentCenter 内容居中
HeFengContentViewAlignmentTop 内容居上
HeFengContentViewAlignmentLeft 内容居左
HeFengContentViewAlignmentDown 内容居下
HeFengContentViewAlignmentRight 内容居右

3.2.3 HeFengPluginViewThemeType

枚举 图标颜色样式
HeFengPluginViewThemeTypeAuto 随天气变化
HeFengPluginViewIconTypeLight 亮色系
HeFengPluginViewIconTypeDark 暗色系

3.2.4 HeFengPluginViewDragDirection

枚举 可拖拽方向
HeFengPluginViewDragDirectionAny 任意方向
HeFengPluginViewDragDirectionHorizontal 水平方向
HeFengPluginViewDragDirectionVertical 垂直方向