You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
414 lines
14 KiB
414 lines
14 KiB
// |
|
// HomeHeaderTableView.m |
|
// tongxin |
|
// |
|
// Created by ecell on 2023/6/20. |
|
// Copyright © 2023 xTT. All rights reserved. |
|
// |
|
|
|
#import "HomeHeaderTableView.h" |
|
#import "WebViewController.h" |
|
#import "ZZBadgeButton.h" |
|
#import "User.h" |
|
#import "ContactsViewController.h" |
|
#import <MapKit/MapKit.h> |
|
#import <AMapFoundationKit/AMapFoundationKit.h> |
|
#import <AMapSearchKit/AMapSearchKit.h> |
|
#import <MAMapKit/MAMapKit.h> |
|
#import "AppDelegate.h" |
|
#import "SLMarqueeControl.h" |
|
|
|
//默认的定位位置 北京 |
|
#define DefineLocate CLLocationCoordinate2DMake(39.9086828351,116.3980865479) |
|
@interface HomeHeaderTableView ()<CLLocationManagerDelegate,MKMapViewDelegate,AMapSearchDelegate> |
|
|
|
|
|
@property (nonatomic ,strong) NSMutableArray *btnArr; |
|
@property (nonatomic ,weak) UILabel *titleLabel; |
|
|
|
|
|
@property (strong, nonatomic) Locate *curLocate;// 设备当前的 位置 |
|
|
|
//逆地理编码 |
|
@property (nonatomic, strong) AMapReGeocodeSearchRequest *regeo; |
|
//逆地理编码使用的 |
|
@property (nonatomic, strong) AMapSearchAPI *search; |
|
|
|
/// 设备信息View |
|
@property (nonatomic ,strong) UIView *msgView; |
|
|
|
/// 设备头像 |
|
@property (nonatomic ,weak) UIImageView *iconImg; |
|
|
|
/// 设备名称 |
|
@property (nonatomic ,weak) UILabel *nameLabel; |
|
|
|
@property (nonatomic ,weak) UILabel *idLabel; |
|
|
|
@property (nonatomic, weak) SLMarqueeControl *marqueeControl; |
|
|
|
/// 位置图片 |
|
@property (nonatomic, weak) UIImageView *positionImg; |
|
|
|
|
|
@end |
|
|
|
@implementation HomeHeaderTableView |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame |
|
{ |
|
self = [super initWithFrame:frame]; |
|
if (self) |
|
{ |
|
self.backgroundColor = KKClearColor; |
|
[self subHeaderView]; |
|
|
|
} |
|
return self; |
|
} |
|
|
|
- (void)subHeaderView |
|
{ |
|
_tempCarouselView = [[XRCarouselView alloc] initWithFrame:CGRectMake(20, 10, ScreenWidth-40, ScreenWidth*0.45)]; |
|
_tempCarouselView.changeMode = ChangeModeFade; |
|
_tempCarouselView.time = 5.0f; |
|
_tempCarouselView.layer.cornerRadius = 10; |
|
_tempCarouselView.layer.masksToBounds = YES; |
|
_tempCarouselView.imageArray = @[[UIImage imageNamed:@"img_banner"]]; |
|
_tempCarouselView.placeholderImage = [UIImage imageNamed:@"img_banner"]; |
|
[self addSubview:_tempCarouselView]; |
|
|
|
UILabel *titleLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextColor text:@"设备信息" Radius:0]; |
|
[self addSubview:titleLabel]; |
|
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(self).offset(20); |
|
make.top.equalTo(_tempCarouselView.mas_bottom).offset(10); |
|
}]; |
|
|
|
|
|
[self addSubview:self.msgView]; |
|
[self.msgView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(self).inset(20); |
|
make.top.equalTo(titleLabel.mas_bottom).offset(10); |
|
make.height.mas_equalTo(105); |
|
}]; |
|
|
|
UILabel *titleLabel1 = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextColor text:@"常用功能" Radius:0]; |
|
[self addSubview:titleLabel1]; |
|
[titleLabel1 mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(titleLabel); |
|
make.top.equalTo(self.msgView.mas_bottom).offset(10); |
|
}]; |
|
|
|
/// 按钮背景View |
|
UIView *bgView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:10 borderWidth:0 borderColor:KKWhiteColorColor]; |
|
self.bgView = bgView; |
|
[self addSubview:bgView]; |
|
[bgView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(self).inset(20); |
|
make.top.equalTo(titleLabel1.mas_bottom).offset(10); |
|
make.height.mas_equalTo(85); |
|
}]; |
|
|
|
|
|
[self subBtnView]; |
|
|
|
} |
|
|
|
|
|
- (void)subBtnView |
|
{ |
|
[self updateMessage]; |
|
for (UIButton *views in self.bgView.subviews) |
|
{ |
|
[views removeFromSuperview]; |
|
} |
|
self.btnArr = [NSMutableArray new]; |
|
|
|
|
|
NSMutableArray *titleArray = [NSMutableArray new]; |
|
NSMutableArray *imageArray = [NSMutableArray new]; |
|
[titleArray addObject:@"电话"]; |
|
[imageArray addObject:@"icon_answer"]; |
|
if (cUser.cDevice.support_alarm && cUser.cDevice.support_alarm.intValue == 1) |
|
{ |
|
[titleArray addObject:@"设备闹钟"]; |
|
[imageArray addObject:@"icon_alarm"]; |
|
} |
|
|
|
if (cUser.cDevice.support_disturb && cUser.cDevice.support_disturb.intValue == 1) |
|
{ |
|
[titleArray addObject:@"上课禁用"]; |
|
[imageArray addObject:@"icon_disabled"]; |
|
} |
|
if(cUser.cDevice.support_video) |
|
{ |
|
[titleArray addObject:@"视频通话"]; |
|
[imageArray addObject:@"icon_home_video_call"]; |
|
} |
|
else |
|
//if (cUser.cDevice.support_whiteList && cUser.cDevice.support_whiteList.intValue ==0) |
|
{ |
|
[titleArray addObject:cUser.cDevice.support_whiteList.intValue ==0 ? @"电话本" : @"管理员"]; |
|
[imageArray addObject:@"icon_phonebook"]; |
|
} |
|
|
|
// [titleArray addObject:@"更多"]; |
|
// [imageArray addObject:@"icon_more"]; |
|
|
|
CGFloat masx = (ScreenWidth-40)/titleArray.count; |
|
for (int i = 0; i < titleArray.count; i++) |
|
{ |
|
NSString *title = [titleArray objectAtIndex:i]; |
|
NSString *image = [imageArray objectAtIndex:i]; |
|
ZZBadgeButton *button = [self createButtonWithTitle:title image:image]; |
|
[button addTarget:self action:@selector(buttonClickAction:) forControlEvents:UIControlEventTouchUpInside]; |
|
button.tag = i; |
|
button.frame = CGRectMake(i*masx, 15, masx, 60); |
|
[self.bgView addSubview:button]; |
|
[self.btnArr addObject:button]; |
|
} |
|
|
|
|
|
} |
|
|
|
|
|
- (void)buttonClickAction:(UIButton *)sender |
|
{ |
|
if ([sender.currentTitle isEqualToString:@"电话"]) |
|
{ |
|
[cUser.cDevice makePhoneCallWithViewController:self.getViewController]; |
|
} |
|
else if ([sender.currentTitle isEqualToString:@"设备闹钟"]) |
|
{ |
|
[UICommon pusXibViewController:@"VoiceAlarmViewController"]; |
|
} |
|
else if ([sender.currentTitle isEqualToString:@"上课禁用"]) |
|
{ [UICommon pusXibViewController:@"DisturbBanViewController"]; |
|
} |
|
else if ([sender.currentTitle isEqualToString:@"电话本"] || [sender.currentTitle isEqualToString:@"管理员"]) |
|
{ |
|
ContactsViewController *vc = (ContactsViewController *)[UICommon pusXibViewController:@"ContactsViewController"]; |
|
vc.viewType = [sender.currentTitle isEqualToString:@"电话本"] ? 999 : 888; |
|
} |
|
else if([sender.currentTitle isEqualToString:@"视频通话"]) |
|
{ |
|
[UICommon pusXibViewController:@"VideoCallViewController"]; |
|
} |
|
// else if ([sender.currentTitle isEqualToString:@"更多"]) |
|
// { |
|
// [UICommon pusXibViewController:@"MoreFunctionsViewController"]; |
|
// } |
|
} |
|
|
|
|
|
- (void)setData:(NSArray*)modelArr WithPlaceholderImage:(NSString *)pImage |
|
{ |
|
_modelArr = modelArr; |
|
_tempCarouselView.placeholderImage = [UIImage imageNamed:pImage]; |
|
if (modelArr && modelArr.count > 0){ |
|
NSMutableArray *tempImageURLArr = [NSMutableArray array]; |
|
for (SlideshowModel *model in modelArr) { |
|
[tempImageURLArr addObject:model.image]; |
|
} |
|
_tempCarouselView.imageArray = tempImageURLArr; |
|
WEAKSELF |
|
_tempCarouselView.imageClickBlock = ^(NSInteger index) { |
|
SlideshowModel *model = weakSelf.modelArr[index]; |
|
|
|
|
|
[cUser postSlideshowInfoWithID:model.id Success:^(id responseObject) { |
|
xLog(@"点击轮播图 ID:%@ name:%@, url:%@",model.id,model.title,model.url); |
|
} failure:^(id faiObject) { |
|
xLog(@"点击轮播图上传失败"); |
|
}]; |
|
if([model.url containsString:@"://"]){ |
|
WebViewController *vc = [WebViewController new]; |
|
vc.url = model.url; |
|
vc.title = model.title; |
|
vc.hidesBottomBarWhenPushed = YES; |
|
// vc.isHiddenNavigationBar = YES; |
|
[weakSelf.getViewController.navigationController pushViewController:vc animated:YES]; |
|
} |
|
}; |
|
|
|
} |
|
} |
|
|
|
- (ZZBadgeButton *)createButtonWithTitle:(NSString *)title image:(NSString *)image |
|
{ |
|
ZZBadgeButton *customButton = [[ZZBadgeButton alloc] init]; |
|
customButton.titleLabel.font = FontADA_(12); |
|
[customButton setTitle:title forState:UIControlStateNormal]; |
|
[customButton setTitleColor:RGB(42, 42, 42) forState:UIControlStateNormal]; |
|
[customButton setImage:[UIImage imageNamed:image] forState:UIControlStateNormal]; |
|
return customButton; |
|
} |
|
|
|
|
|
|
|
- (void)updateMessage |
|
{ |
|
if(cUser.cDevice.lastLocation) |
|
{ |
|
self.curLocate = cUser.cDevice.lastLocation; |
|
self.positionImg.image = ImageName_(@"home_icon_gps"); |
|
if (self.curLocate.address.length > 0) |
|
self.marqueeControl.marqueeLabel.text = self.curLocate.address; |
|
self.regeo.location = [AMapGeoPoint locationWithLatitude:[self.curLocate.lat floatValue] longitude:[self.curLocate.lon floatValue]]; |
|
[self.search AMapReGoecodeSearch:self.regeo]; |
|
} |
|
else |
|
{ |
|
self.positionImg.image = ImageName_(@"home_icon_gps_inaccurate"); |
|
self.marqueeControl.marqueeLabel.text = @"当前位置未知,请确保设备开机且能够联网,再点击定位按钮进行定位"; |
|
} |
|
[self.iconImg sd_setImageWithURL:[NSURL URLWithString:cUser.avator] |
|
placeholderImage:[myHelper getImageWithName:@"默认用户头像"] |
|
options:SDWebImageRetryFailed]; |
|
self.nameLabel.text = cUser.cDevice.name; |
|
self.idLabel.text = [NSString stringWithFormat:@"账号:%@",cUser.cDevice.imei]; |
|
|
|
} |
|
|
|
|
|
- (AMapReGeocodeSearchRequest *)regeo { |
|
if (!_regeo) { |
|
_regeo = [[AMapReGeocodeSearchRequest alloc]init]; |
|
_regeo.requireExtension = YES; |
|
} |
|
return _regeo; |
|
} |
|
|
|
- (AMapSearchAPI *)search { |
|
if (!_search) { |
|
_search = [[AMapSearchAPI alloc]init]; |
|
_search.delegate = self; |
|
} |
|
return _search; |
|
} |
|
|
|
|
|
|
|
#pragma mark ====高德地图位置解析回调==== |
|
|
|
-(void)onReGeocodeSearchDone:(AMapReGeocodeSearchRequest *)request response:(AMapReGeocodeSearchResponse *)response{ |
|
if (response.regeocode != nil) |
|
{ |
|
NSString *name = response.regeocode.formattedAddress; |
|
self.marqueeControl.marqueeLabel.text = name; |
|
self.positionImg.image = ImageName_(@"home_icon_gps"); |
|
} |
|
} |
|
|
|
- (UIView *)msgView |
|
{ |
|
if (!_msgView) |
|
{ |
|
_msgView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:10 borderWidth:0 borderColor:KKWhiteColorColor]; |
|
|
|
|
|
/// 设备头像 |
|
UIImageView *iconImg = [UIImageView new]; |
|
iconImg.layer.cornerRadius = 25; |
|
iconImg.layer.masksToBounds = YES; |
|
self.iconImg = iconImg; |
|
[_msgView addSubview:iconImg]; |
|
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(_msgView.mas_left).offset(18); |
|
make.centerY.equalTo(_msgView); |
|
make.size.mas_equalTo(CGSizeMake(50, 50)); |
|
}]; |
|
|
|
UIButton *btn = [UICommon ui_buttonSimple:CGRectZero font:Font_(0) normalColor:KKClearColor normalText:@"" click:^(id x) { |
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; |
|
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"EditDeviceViewController"]; |
|
[vc setValue:@(NO) forKey:@"isAdd"]; |
|
[self.getViewController.navigationController pushViewController:vc animated:YES]; |
|
}]; |
|
[_msgView addSubview:btn]; |
|
[btn mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(_msgView); |
|
make.top.equalTo(_msgView); |
|
make.bottom.equalTo(iconImg.mas_bottom); |
|
}]; |
|
|
|
|
|
|
|
/// 设备名称 |
|
UILabel *nameLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextColor text:@"" Radius:0]; |
|
self.nameLabel = nameLabel; |
|
[_msgView addSubview:nameLabel]; |
|
[nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(iconImg.mas_right).offset(18); |
|
make.top.equalTo(_msgView).offset(19.5); |
|
}]; |
|
|
|
UILabel *idLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:Font_(12) textColor:RGB(133, 133, 133) text:@"" Radius:0]; |
|
self.idLabel = idLabel; |
|
[_msgView addSubview:idLabel]; |
|
[idLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(nameLabel.mas_left); |
|
make.centerY.equalTo(_msgView); |
|
}]; |
|
|
|
|
|
/// 右箭头图片 |
|
UIImageView *rightImg = [UICommon ui_imageView:CGRectZero fileName:@"comm_right_icon"]; |
|
[_msgView addSubview:rightImg]; |
|
[rightImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.right.equalTo(_msgView.mas_right).inset(18); |
|
make.top.equalTo(_msgView).offset(30.5); |
|
make.size.mas_equalTo(CGSizeMake(8, 15)); |
|
}]; |
|
|
|
|
|
UILabel *ttLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:Font_(12) textColor:RGB(133, 133, 133) text:@"编辑资料" Radius:0]; |
|
[_msgView addSubview:ttLabel]; |
|
[ttLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.right.equalTo(rightImg.mas_left).inset(10); |
|
make.centerY.equalTo(rightImg.mas_centerY); |
|
}]; |
|
|
|
|
|
/// 位置跑马灯 |
|
SLMarqueeControl *control = [[SLMarqueeControl alloc] initWithFrame:CGRectMake(111, 73.5, ScreenWidth-40-111-15, 12)]; |
|
control.backgroundColor = KKClearColor; |
|
control.marqueeLabel.text = @"当前位置未知,请确保设备开机且能够联网,再点击定位按钮进行定位"; |
|
self.marqueeControl = control; |
|
[_msgView addSubview:control]; |
|
|
|
/// 位置图片 |
|
UIImageView *positionImg = [UIImageView new]; |
|
self.positionImg = positionImg; |
|
[_msgView addSubview:positionImg]; |
|
[positionImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(nameLabel); |
|
make.centerY.equalTo(control); |
|
make.size.mas_equalTo(CGSizeMake(15, 15)); |
|
}]; |
|
|
|
|
|
// UITapGestureRecognizer *tapPress = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(mapViewtapPressed)]; |
|
// [_msgView addGestureRecognizer:tapPress]; |
|
|
|
} |
|
return _msgView; |
|
} |
|
|
|
|
|
- (void)mapViewtapPressed |
|
{ |
|
[UICommon currentVC].tabBarController.selectedIndex = 2; |
|
} |
|
|
|
/* |
|
// Only override drawRect: if you perform custom drawing. |
|
// An empty implementation adversely affects performance during animation. |
|
- (void)drawRect:(CGRect)rect { |
|
// Drawing code |
|
} |
|
*/ |
|
|
|
@end |
|
|
|
|