features:1.新绚多设备适配

2.修复品牌展示页&摄像头页面适配bug
This commit is contained in:
一只会编程的狮子
2019-04-21 22:13:06 +08:00
parent bc264e2d1f
commit e1103b04af
15 changed files with 545 additions and 86 deletions
@@ -0,0 +1,20 @@
//
// Xuanduo2DataUtility.h
// Ifish
//
// Created by Alex on 2019/4/21.
// Copyright © 2019 lianlian. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Xuanduo2Model.h"
NS_ASSUME_NONNULL_BEGIN
@interface Xuanduo2DataUtility : NSObject
+(void)readSocketDataWithBackMsgModel:(Xuanduo2Model*)xuanduoModel addWithBackData:(NSData*)data;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,32 @@
//
// Xuanduo2DataUtility.m
// Ifish
//
// Created by Alex on 2019/4/21.
// Copyright © 2019 lianlian. All rights reserved.
//
#import "Xuanduo2DataUtility.h"
@implementation Xuanduo2DataUtility
+(void)readSocketDataWithBackMsgModel:(Xuanduo2Model*)xuanduoModel addWithBackData:(NSData*)data{
NSString *dataString = [dataContorl dataToHexString:data];// 转十六进制
xuanduoModel.gasPump = [dataString substringWithRange:NSMakeRange(30, 4)];
xuanduoModel.light1 = [dataString substringWithRange:NSMakeRange(34, 4)];
xuanduoModel.light2 = [dataString substringWithRange:NSMakeRange(38, 4)];
xuanduoModel.waterPump = [dataString substringWithRange:NSMakeRange(42, 4)];
xuanduoModel.uvLamp = [dataString substringWithRange:NSMakeRange(46, 4)];
xuanduoModel.waveMakingPump = [dataString substringWithRange:NSMakeRange(50, 4)];
xuanduoModel.status = [dataString substringWithRange:NSMakeRange(54, 4)];
xuanduoModel.heatStatus = [dataString substringWithRange:NSMakeRange(58, 2)];
xuanduoModel.waterTemperature = [dataString substringWithRange:NSMakeRange(60, 4)];
xuanduoModel.heatingTemperature = [dataString substringWithRange:NSMakeRange(64, 4)];
xuanduoModel.huliLight = [dataString substringWithRange:NSMakeRange(68, 2)];
xuanduoModel.electricity = [dataString substringWithRange:NSMakeRange(70, 4)];
xuanduoModel.alarmSwitch = [dataString substringWithRange:NSMakeRange(74, 2)];
xuanduoModel.miniTemp = [dataString substringWithRange:NSMakeRange(76, 4)];
xuanduoModel.maxTemp = [dataString substringWithRange:NSMakeRange(80, 4)];
}
@end
@@ -0,0 +1,73 @@
//
// Xuanduo2Model.h
// Ifish
//
// Created by Alex on 2019/4/20.
// Copyright © 2019 lianlian. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
#if 0
01
08
807d3a42a200
807d3a42a200
2c — 44字节
0101 增氧
0201 灯1
0301 灯2
0401 循环泵
0501 杀菌
0601 造浪
0701 加热制冷
01 加热控制状态
00e1 水温
00fa 加热温度
00 护理灯开关
007d 电量
00 报警开关
00c8 最低报警温度
012c 最高报警温度
bfec crc16校验码
#endif
@interface Xuanduo2Model : NSObject
/// 增氧泵 -- 气泵
@property (nonatomic, strong) NSString *gasPump;
/// 灯1
@property (nonatomic, strong) NSString *light1;
/// 灯2
@property (nonatomic, strong) NSString *light2;
/// 循环泵 -- 水泵
@property (nonatomic, strong) NSString *waterPump;
/// 杀菌灯
@property (nonatomic, strong) NSString *uvLamp;
/// 造浪泵
@property (nonatomic, strong) NSString *waveMakingPump;
/// 加热制冷状态
@property (nonatomic, strong) NSString *status;
/// 加热状态
@property (nonatomic, strong) NSString *heatStatus;
/// 水温
@property (nonatomic, strong) NSString *waterTemperature;
/// 加热温度
@property (nonatomic, strong) NSString *heatingTemperature;
/// 护理灯开关
@property (nonatomic, strong) NSString *huliLight;
/// 电量
@property (nonatomic, strong) NSString *electricity;
/// 报警开关
@property (nonatomic, strong) NSString *alarmSwitch;
/// 最低温
@property (nonatomic, strong) NSString *miniTemp;
/// 最高温
@property (nonatomic, strong) NSString *maxTemp;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,13 @@
//
// Xuanduo2Model.m
// Ifish
//
// Created by Alex on 2019/4/20.
// Copyright © 2019 lianlian. All rights reserved.
//
#import "Xuanduo2Model.h"
@implementation Xuanduo2Model
@end
@@ -14,10 +14,16 @@
#import "IfishDataUnity.h"
#import "XuToSetViewController.h"
#import "CreatErWeiMaController.h"
#import "SongBaoViewController.h"
#import "XuToControlName.h"
#import "UserExtendataArchaver.h"
#import "UIButton+WebCache.h"
#import "NSString+Add.h"
#import "Xuanduo2DataUtility.h"
@interface Xuanduo2fController ()<LxPopViewDelegate>
#define kBtnTag 100
@interface Xuanduo2fController ()<LxPopViewDelegate,IfishCommuniteDelegate>
@property(nonatomic,strong) DXPopover *popover;
@property (weak, nonatomic) IBOutlet UIView *positionView;
@property (weak, nonatomic) IBOutlet UILabel *shajunLight;
@@ -28,6 +34,12 @@
@property (weak, nonatomic) IBOutlet UILabel *huliLabel;
@property (weak, nonatomic) IBOutlet UILabel *xunhuanLabel;
@property (weak, nonatomic) IBOutlet UILabel *jiareLabel;
@property (weak, nonatomic) IBOutlet UIButton *brandBtn;
@property (weak, nonatomic) IBOutlet UILabel *brandName;
@property (nonatomic ,strong) Xuanduo2Model *dataModel;
@property (weak, nonatomic) IBOutlet UILabel *tempLabel;
@property (weak, nonatomic) IBOutlet UILabel *tipLabel;
@property (nonatomic, strong) NSTimer *switchTimer;
@end
@@ -41,6 +53,7 @@
- (void)viewDidLoad {
[super viewDidLoad];
[self setup];
[self connect];
// Do any additional setup after loading the view from its nib.
}
@@ -52,53 +65,135 @@
[rightPopButton setImage:MyEquipmentImage forState:UIControlStateNormal];
rightPopButton.frame=CGRectMake(kScreenWidth-60,0,60,44);
[rightPopButton setImageEdgeInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
[rightPopButton addTarget:self action:@selector(presentPopView) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:rightPopButton];
self.navigationItem.rightBarButtonItem =rightItem;
//品牌展示
[_brandBtn sd_setBackgroundImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kGetLogUrl,self.currentDevice.logo]] forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"brandLogo_hold"]];
_brandName.text = self.currentDevice.brandName;
[self initCHNames];
[Socketsingleton sharedInstance].communiteDelegate = self;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tempSwitch)];
[self.tempLabel addGestureRecognizer:tap];
}
- (void)connect {
if ([self.currentDevice.isBlacklist isEqualToString:@"0"]) {
[self InitSocket];//允许请求数据
}
}
#pragma mark 连接socket
-(void)InitSocket{
NSLog(@"******%d",[Socketsingleton sharedInstance].clientSocket.isConnected);
if (![Socketsingleton sharedInstance].clientSocket.isConnected) {
//[[Socketsingleton sharedInstance];
}
// 切换设备 先断开然后重连
[[Socketsingleton sharedInstance] socketConnectHost];
[Socketsingleton sharedInstance].macAddress = self.currentDevice.macAddress;
}
#pragma mark 通信监听communiteDelegate
//当已经和服务端断开连接后调用该代理方法
//断线重连功能需要在这里进行
-(void)ifishSocketDidDisconnect:(AsyncSocket *)sock{
}
-(void)ifishSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err{
// NSLog(@"soket错误断开");
// NSLog(@"存留数据%@",[sock unreadData]);
}
-(BOOL)ifishSocketWillConnect:(AsyncSocket *)sock{
// NSLog(@"将要链接");
return YES;
}
#pragma mark 当已经与服务端建立连接后调用的代理方法
-(void)ifishSocket:(AsyncSocket *)sock ifishSocketdidConnectToHost:(NSString *)host port:(UInt16)port{
//已建立连接 登陆指令同意在soket单例中
}
//发送完成处理
-(void)ifishSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag{
}
#pragma mark 登陆成功后收到服务端的回执之后,调用的代理方法
//父类里面不执行此方法 接收服务器返回信息 在子类中做处理
//communiteDelegate
-(void)socketDidGetBackmsgData:(NSData *)data onsoket:(AsyncSocket *)sock{
[Xuanduo2DataUtility readSocketDataWithBackMsgModel:self.dataModel addWithBackData:data];
if ([self.tipLabel.text isEqualToString:@"当月电量"]) {
[self setTemperature];
}
}
-(void)ifishDeviceLogInFail{
}
-(void)ifishDeviceLogInSuccees{
}
-(void)ifishSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{
}
#pragma mark -- actions --
- (IBAction)btnActions:(UIButton *)sender {
sender.selected = !sender.selected;
switch (sender.tag) {
case kBtnTag: //杀菌灯
break;
case kBtnTag + 1:
default:
break;
}
}
- (IBAction)brandClick:(id)sender {
SongBaoViewController *brand = [[SongBaoViewController alloc]init];
brand.brandIntroduce = self.currentDevice.brandIntroduce;
[self.navigationController pushViewController:brand animated:YES];
self.navigationController.navigationBarHidden=NO;
}
- (void)tempSwitch {
if ([self.tipLabel.text isEqualToString:@"当月电量"]) {
}else {
self.tipLabel.text = @"当月电量";
UInt64 mac = [dataContorl hexToTen:self.dataModel.electricity];
NSString *stringTemp = [NSString stringWithFormat:@"%llukwh",mac];
[self.tempLabel setAttributedText:[NSString ls_changeFontAndColor:[UIFont systemFontOfSize:15] Color:nil TotalString:stringTemp SubStringArray:@[@"kwh"]]];
}
}
#pragma -- actions --
- (void)goBackAction{
[[Socketsingleton sharedInstance] cutOffSocket];
[[IfishDataUnity shareDataInstance] setAppTabRoot];
}
- (IBAction)shajunAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)zengyangAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)dengguang1Action:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)dengguang2Action:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)zaoyangAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)huliAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)xunhuanAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
- (IBAction)jiareAction:(UIButton*)sender {
sender.selected = !sender.selected;
}
-(void)presentPopView{
- (void)presentPopView{
UIImage *image = [UIImage imageNamed:@"popover_background_image_notrangle"];
NSArray *titleImgs = nil;
@@ -156,6 +251,15 @@
#pragma mark - 修改设备名
- (void)setTemperature {
UInt64 mac = [dataContorl hexToTen:self.dataModel.waterTemperature];
NSLog(@"%llu",mac);
//float TPlabel=mac/10+(mac%10)*0.1;
float temp = mac/10;
NSString *stringTemp = [NSString stringWithFormat:@"%.1f℃",temp];
[self.tempLabel setAttributedText:[NSString ls_changeFontAndColor:[UIFont systemFontOfSize:15] Color:nil TotalString:stringTemp SubStringArray:@[@""]]];
}
-(void)shezhiMingCheng{
XuToControlNameViewController *_changeNameVC = [[XuToControlNameViewController alloc] init];
_changeNameVC.isNewdevice = YES;
@@ -169,6 +273,7 @@
[ wself.navigationController pushViewController: _changeNameVC animated:YES];
}
/// 各种控制旋钮标题显示
-(void)initCHNames{
XuToControlName *name = [UserExtendataArchaver currentNewXuToControlName:self.currentDevice.macAddress];
@@ -322,5 +427,16 @@
}
- (Xuanduo2Model *)dataModel {
if (!_dataModel) {
_dataModel = [Xuanduo2Model new];
}
return _dataModel;
}
- (void)dealloc {
}
@end
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina5_9" orientation="portrait">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
@@ -12,12 +12,16 @@
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="Xuanduo2fController">
<connections>
<outlet property="brandBtn" destination="KcF-jg-Mz2" id="90Z-SG-zCz"/>
<outlet property="brandName" destination="pjU-4c-KIu" id="7o4-eb-hHX"/>
<outlet property="huliLabel" destination="OLb-WT-tQ0" id="zfj-0D-wQW"/>
<outlet property="jiareLabel" destination="r24-bR-0zZ" id="1FX-Ye-0ju"/>
<outlet property="light1Label" destination="w1W-F8-kDG" id="9Tm-jx-s9C"/>
<outlet property="light2Label" destination="k4O-MJ-aZd" id="dsc-dG-n76"/>
<outlet property="positionView" destination="G1c-II-WK8" id="4Cm-FT-QIK"/>
<outlet property="shajunLight" destination="zRG-Xz-MbP" id="LTQ-hk-FrW"/>
<outlet property="tempLabel" destination="brS-3x-RcE" id="eAw-p5-o08"/>
<outlet property="tipLabel" destination="vcu-MT-d6F" id="f4o-WG-803"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
<outlet property="xunhuanLabel" destination="7KA-Hc-54C" id="QRq-jP-IC4"/>
<outlet property="zaolangLabel" destination="BWx-iu-nY0" id="rxl-X0-mne"/>
@@ -26,14 +30,14 @@
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="H1f-gs-HPh">
<rect key="frame" x="0.0" y="44" width="375" height="734"/>
<rect key="frame" x="0.0" y="20" width="375" height="647"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aik-7S-q8v" userLabel="Content View">
<rect key="frame" x="0.0" y="0.0" width="375" height="600.66666666666663"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="600.5"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="xuanduo_bg" translatesAutoresizingMaskIntoConstraints="NO" id="EVp-Sm-Feq">
<rect key="frame" x="0.0" y="0.0" width="375" height="260"/>
@@ -42,143 +46,143 @@
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="鱼缸温度" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vcu-MT-d6F">
<rect key="frame" x="156.66666666666666" y="320" width="62" height="18"/>
<rect key="frame" x="156.5" y="320" width="62" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="94R-4Q-SUx">
<rect key="frame" x="29.999999999999996" y="383" width="45.666666666666657" height="45.666666666666686"/>
<button opaque="NO" tag="100" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="94R-4Q-SUx">
<rect key="frame" x="30" y="383" width="46" height="46"/>
<constraints>
<constraint firstAttribute="width" secondItem="94R-4Q-SUx" secondAttribute="height" multiplier="1:1" id="zkk-3F-Fut"/>
</constraints>
<state key="normal" backgroundImage="shajun_normal"/>
<state key="selected" backgroundImage="shajun_selected"/>
<connections>
<action selector="shajunAction:" destination="-1" eventType="touchUpInside" id="tZ7-5v-2t8"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="Gyn-cy-b2q"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZVe-ED-kl7">
<rect key="frame" x="119.66666666666669" y="383" width="46" height="45.666666666666686"/>
<button opaque="NO" tag="101" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ZVe-ED-kl7">
<rect key="frame" x="120" y="383" width="45.5" height="46"/>
<constraints>
<constraint firstAttribute="width" secondItem="ZVe-ED-kl7" secondAttribute="height" multiplier="1:1" id="Nyb-kW-maB"/>
</constraints>
<state key="normal" backgroundImage="zengyang_noraml"/>
<state key="selected" backgroundImage="zengyang_selected"/>
<connections>
<action selector="zengyangAction:" destination="-1" eventType="touchUpInside" id="pSk-Su-1AB"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="jcG-z7-mUY"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WFc-cF-80l">
<rect key="frame" x="209.66666666666666" y="383" width="45.666666666666657" height="45.666666666666686"/>
<button opaque="NO" tag="103" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WFc-cF-80l">
<rect key="frame" x="209.5" y="383" width="46" height="46"/>
<constraints>
<constraint firstAttribute="width" secondItem="WFc-cF-80l" secondAttribute="height" multiplier="1:1" id="KNO-vi-GYn"/>
</constraints>
<state key="normal" backgroundImage="dengguang_normal"/>
<state key="selected" backgroundImage="dengguang_selected"/>
<connections>
<action selector="dengguang1Action:" destination="-1" eventType="touchUpInside" id="MbL-ka-P6C"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="QiP-2l-6Gh"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RHd-Xx-AyG">
<rect key="frame" x="299.33333333333331" y="383" width="45.666666666666686" height="45.666666666666686"/>
<button opaque="NO" tag="104" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RHd-Xx-AyG">
<rect key="frame" x="299.5" y="383" width="45.5" height="46"/>
<constraints>
<constraint firstAttribute="width" secondItem="RHd-Xx-AyG" secondAttribute="height" multiplier="1:1" id="npW-2w-QHd"/>
</constraints>
<state key="normal" backgroundImage="dengguang_normal"/>
<state key="selected" backgroundImage="dengguang_selected"/>
<connections>
<action selector="dengguang2Action:" destination="-1" eventType="touchUpInside" id="OSn-fc-Omj"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="kAA-hr-Wun"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="杀菌灯" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zRG-Xz-MbP">
<rect key="frame" x="34.333333333333336" y="432.66666666666669" width="37.000000000000007" height="15"/>
<rect key="frame" x="34.5" y="433" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="增氧泵" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dse-Ih-U5R">
<rect key="frame" x="124" y="432.66666666666669" width="37" height="15"/>
<rect key="frame" x="124" y="433" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="灯光1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w1W-F8-kDG">
<rect key="frame" x="217" y="432.66666666666669" width="31" height="15"/>
<rect key="frame" x="217" y="433" width="31" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="灯光2" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k4O-MJ-aZd">
<rect key="frame" x="306" y="432.66666666666669" width="32" height="15"/>
<rect key="frame" x="306" y="433" width="32" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="83l-yl-ndR">
<rect key="frame" x="29.999999999999996" y="490.66666666666663" width="45.666666666666657" height="46"/>
<button opaque="NO" tag="105" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="83l-yl-ndR">
<rect key="frame" x="30" y="491" width="46" height="45.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="83l-yl-ndR" secondAttribute="height" multiplier="1:1" id="w6a-qu-5EK"/>
</constraints>
<state key="normal" backgroundImage="zaolang_normal"/>
<state key="selected" backgroundImage="zaolang_selectd"/>
<connections>
<action selector="zaoyangAction:" destination="-1" eventType="touchUpInside" id="APC-hG-sEM"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="JYg-AF-0fV"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ucP-6q-kgn">
<rect key="frame" x="119.66666666666669" y="490.66666666666663" width="46" height="46"/>
<button opaque="NO" tag="106" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ucP-6q-kgn">
<rect key="frame" x="120" y="491" width="45.5" height="45.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="ucP-6q-kgn" secondAttribute="height" multiplier="1:1" id="Vkv-7O-YZz"/>
</constraints>
<state key="normal" backgroundImage="huli_noraml"/>
<state key="selected" backgroundImage="huli_selected"/>
<connections>
<action selector="huliAction:" destination="-1" eventType="touchUpInside" id="mgh-an-HSm"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="jNj-Lu-4Vh"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wZH-6A-6dN">
<rect key="frame" x="209.66666666666666" y="490.66666666666663" width="45.666666666666657" height="46"/>
<button opaque="NO" tag="107" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wZH-6A-6dN">
<rect key="frame" x="209.5" y="491" width="46" height="45.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="wZH-6A-6dN" secondAttribute="height" multiplier="1:1" id="526-Hn-VeS"/>
</constraints>
<state key="normal" backgroundImage="xunhuan_noraml"/>
<state key="selected" backgroundImage="xunhuan_selected"/>
<connections>
<action selector="xunhuanAction:" destination="-1" eventType="touchUpInside" id="ok8-zP-Tig"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="zCg-7a-yCn"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fFJ-1w-2f5">
<rect key="frame" x="299.33333333333331" y="490.66666666666663" width="45.666666666666686" height="46"/>
<button opaque="NO" tag="108" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fFJ-1w-2f5">
<rect key="frame" x="299.5" y="491" width="45.5" height="45.5"/>
<constraints>
<constraint firstAttribute="width" secondItem="fFJ-1w-2f5" secondAttribute="height" multiplier="1:1" id="4jg-CV-sDI"/>
</constraints>
<state key="normal" backgroundImage="jiare_normal"/>
<state key="selected" backgroundImage="jiare_selected"/>
<connections>
<action selector="jiareAction:" destination="-1" eventType="touchUpInside" id="Mt5-Oe-uhg"/>
<action selector="btnActions:" destination="-1" eventType="touchUpInside" id="Mb6-Vi-eFy"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="造浪泵" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BWx-iu-nY0">
<rect key="frame" x="34.333333333333336" y="540.66666666666663" width="37.000000000000007" height="15"/>
<rect key="frame" x="34.5" y="540.5" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="护理灯" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OLb-WT-tQ0">
<rect key="frame" x="124" y="540.66666666666663" width="37" height="15"/>
<rect key="frame" x="124" y="540.5" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="循环泵" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7KA-Hc-54C">
<rect key="frame" x="214" y="540.66666666666663" width="37" height="15"/>
<rect key="frame" x="214" y="540.5" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="加热棒" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r24-bR-0zZ">
<rect key="frame" x="303.66666666666669" y="540.66666666666663" width="37" height="15"/>
<rect key="frame" x="303.5" y="540.5" width="37" height="15"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
@@ -191,14 +195,14 @@
<constraint firstAttribute="height" constant="44" id="sb9-6y-9OZ"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="20 " textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="brS-3x-RcE">
<rect key="frame" x="137.66666666666666" y="210" width="100" height="100"/>
<label opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0 " textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="brS-3x-RcE">
<rect key="frame" x="137.5" y="210" width="100" height="100"/>
<color key="backgroundColor" red="0.70196078431372544" green="0.70196078431372544" blue="0.70196078431372544" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="100" id="GQu-NL-cde"/>
<constraint firstAttribute="width" constant="100" id="PVA-da-FwT"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="30"/>
<fontDescription key="fontDescription" type="system" pointSize="27"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
@@ -206,6 +210,23 @@
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
</userDefinedRuntimeAttributes>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="KcF-jg-Mz2">
<rect key="frame" x="30" y="18" width="63" height="31"/>
<constraints>
<constraint firstAttribute="height" constant="31" id="LNl-zb-LQq"/>
<constraint firstAttribute="width" constant="63" id="dEA-Xi-jls"/>
</constraints>
<state key="normal" backgroundImage="brandLogo_hold.png"/>
<connections>
<action selector="brandClick:" destination="-1" eventType="touchUpInside" id="Nv0-XJ-uJg"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pjU-4c-KIu">
<rect key="frame" x="42.5" y="57" width="38" height="17"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
@@ -213,11 +234,13 @@
<constraint firstItem="ZVe-ED-kl7" firstAttribute="width" secondItem="94R-4Q-SUx" secondAttribute="width" id="3se-2R-nR8"/>
<constraint firstItem="vcu-MT-d6F" firstAttribute="top" secondItem="brS-3x-RcE" secondAttribute="bottom" constant="10" id="4B2-Mr-ob3"/>
<constraint firstItem="OLb-WT-tQ0" firstAttribute="top" secondItem="ucP-6q-kgn" secondAttribute="bottom" constant="4" id="4Bf-gm-YTx"/>
<constraint firstItem="pjU-4c-KIu" firstAttribute="top" secondItem="KcF-jg-Mz2" secondAttribute="bottom" constant="8" id="4U0-5n-ux5"/>
<constraint firstItem="k4O-MJ-aZd" firstAttribute="top" secondItem="RHd-Xx-AyG" secondAttribute="bottom" constant="4" id="6Bg-et-4ju"/>
<constraint firstItem="G1c-II-WK8" firstAttribute="top" secondItem="aik-7S-q8v" secondAttribute="top" id="83E-pJ-8Fg"/>
<constraint firstItem="ucP-6q-kgn" firstAttribute="top" secondItem="83l-yl-ndR" secondAttribute="top" id="9Cs-Lk-q7I"/>
<constraint firstItem="RHd-Xx-AyG" firstAttribute="width" secondItem="94R-4Q-SUx" secondAttribute="width" id="A2B-qb-Kn1"/>
<constraint firstItem="83l-yl-ndR" firstAttribute="top" secondItem="zRG-Xz-MbP" secondAttribute="bottom" constant="43" id="AAh-cS-gv0"/>
<constraint firstItem="pjU-4c-KIu" firstAttribute="centerX" secondItem="KcF-jg-Mz2" secondAttribute="centerX" id="AHE-tf-SLB"/>
<constraint firstItem="wZH-6A-6dN" firstAttribute="top" secondItem="ucP-6q-kgn" secondAttribute="top" id="B3z-EE-VMG"/>
<constraint firstAttribute="bottom" secondItem="BWx-iu-nY0" secondAttribute="bottom" constant="45" id="BOU-73-VsD"/>
<constraint firstItem="7KA-Hc-54C" firstAttribute="centerX" secondItem="wZH-6A-6dN" secondAttribute="centerX" id="CuI-89-MX4"/>
@@ -236,6 +259,7 @@
<constraint firstItem="k4O-MJ-aZd" firstAttribute="centerX" secondItem="RHd-Xx-AyG" secondAttribute="centerX" id="O1e-yh-1dd"/>
<constraint firstItem="wZH-6A-6dN" firstAttribute="leading" secondItem="ucP-6q-kgn" secondAttribute="trailing" constant="44" id="OWU-Aa-pW7"/>
<constraint firstItem="ZVe-ED-kl7" firstAttribute="width" secondItem="ZVe-ED-kl7" secondAttribute="height" multiplier="1:1" id="Qyh-QP-HeZ"/>
<constraint firstItem="KcF-jg-Mz2" firstAttribute="leading" secondItem="aik-7S-q8v" secondAttribute="leading" constant="30" id="Rke-2G-beZ"/>
<constraint firstItem="RHd-Xx-AyG" firstAttribute="width" secondItem="RHd-Xx-AyG" secondAttribute="height" multiplier="1:1" id="T9h-Jc-mSP"/>
<constraint firstItem="BWx-iu-nY0" firstAttribute="top" secondItem="83l-yl-ndR" secondAttribute="bottom" constant="4" id="TWl-21-aNy"/>
<constraint firstItem="WFc-cF-80l" firstAttribute="leading" secondItem="ZVe-ED-kl7" secondAttribute="trailing" constant="44" id="TZx-fE-vtq"/>
@@ -261,6 +285,7 @@
<constraint firstItem="fFJ-1w-2f5" firstAttribute="width" secondItem="fFJ-1w-2f5" secondAttribute="height" multiplier="1:1" id="ns1-lf-YQG"/>
<constraint firstItem="ucP-6q-kgn" firstAttribute="width" secondItem="ucP-6q-kgn" secondAttribute="height" multiplier="1:1" id="q0b-Ok-bD1"/>
<constraint firstAttribute="trailing" secondItem="fFJ-1w-2f5" secondAttribute="trailing" constant="30" id="s7v-x0-Wl5"/>
<constraint firstItem="KcF-jg-Mz2" firstAttribute="top" secondItem="aik-7S-q8v" secondAttribute="top" constant="18" id="tdu-Q3-j07"/>
<constraint firstAttribute="trailing" secondItem="G1c-II-WK8" secondAttribute="trailing" id="teN-7B-Npa"/>
<constraint firstItem="RHd-Xx-AyG" firstAttribute="centerY" secondItem="WFc-cF-80l" secondAttribute="centerY" id="tpr-qz-KT0"/>
<constraint firstItem="vcu-MT-d6F" firstAttribute="centerX" secondItem="aik-7S-q8v" secondAttribute="centerX" id="uKM-H9-GFY"/>
@@ -294,6 +319,7 @@
</view>
</objects>
<resources>
<image name="brandLogo_hold.png" width="126" height="63"/>
<image name="dengguang_normal" width="52" height="52"/>
<image name="dengguang_selected" width="52" height="52"/>
<image name="huli_noraml" width="52" height="52"/>
@@ -302,7 +328,7 @@
<image name="jiare_selected" width="52" height="52"/>
<image name="shajun_normal" width="52.5" height="52.5"/>
<image name="shajun_selected" width="52.5" height="52.5"/>
<image name="xuanduo_bg" width="843.75" height="586.5"/>
<image name="xuanduo_bg" width="562.5" height="390.75"/>
<image name="xunhuan_noraml" width="104" height="104"/>
<image name="xunhuan_selected" width="52" height="52"/>
<image name="zaolang_normal" width="52" height="52"/>