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.
378 lines
13 KiB
378 lines
13 KiB
// |
|
// WatchHomeHeaderView.m |
|
// tongxin |
|
// |
|
// Created by ecell on 2023/4/25. |
|
// Copyright © 2023 xTT. All rights reserved. |
|
// |
|
|
|
#import "WatchHomeHeaderView.h" |
|
#import "ZZBadgeButton.h" |
|
#import "baseModel.h" |
|
#import "Device.h" |
|
#import "User.h" |
|
#import "DisturbBanViewController.h" |
|
#import "ContactsViewController.h" |
|
|
|
#import "NewStepVC.h" |
|
|
|
#import "EllipsePageControl.h" |
|
#import "ShortMessageListViewController.h" |
|
|
|
@interface WatchHomeHeaderView ()<UIScrollViewDelegate> |
|
|
|
@property (nonatomic ,strong) UIScrollView *bgScrollView; |
|
|
|
@property (nonatomic ,strong) EllipsePageControl *pageControl; |
|
|
|
@property (nonatomic ,weak) UIView *bgView; |
|
|
|
/// 按钮菜单View |
|
@property (nonatomic ,weak) UIView *btnView; |
|
|
|
///昵称 |
|
@property (nonatomic ,weak) UILabel *nameLabel; |
|
|
|
/// 头像 |
|
@property (nonatomic ,weak) UIImageView *iconImg; |
|
|
|
/// 电量 |
|
@property (nonatomic ,weak) UIImageView *kwhImg; |
|
|
|
///电量 |
|
@property (nonatomic ,weak) UILabel *kwhLabel; |
|
|
|
@property (nonatomic ,strong) NSMutableArray *btnArr; |
|
|
|
@end |
|
|
|
@implementation WatchHomeHeaderView |
|
|
|
- (instancetype)initWithFrame:(CGRect)frame |
|
{ |
|
self = [super initWithFrame:frame]; |
|
if (self) |
|
{ |
|
self.backgroundColor = KKClearColor; |
|
self.clipsToBounds = YES; |
|
[self subHeaderView]; |
|
} |
|
return self; |
|
} |
|
|
|
- (void)subHeaderView |
|
{ |
|
[self addSubview:self.bgScrollView]; |
|
[self addSubview:self.pageControl]; |
|
// [self.pageControl mas_makeConstraints:^(MASConstraintMaker *make) { |
|
// make.centerX.equalTo(self); |
|
// make.top.equalTo(self.bgScrollView.mas_bottom).offset(5); |
|
// make.size.mas_equalTo(CGSizeMake(200, 10)); |
|
// }]; |
|
|
|
} |
|
|
|
//16 = |
|
|
|
|
|
|
|
- (UIScrollView *)bgScrollView |
|
{ |
|
if (!_bgScrollView) |
|
{ |
|
_bgScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(10, 15, ScreenWidth-20, 188)]; |
|
_bgScrollView.delegate = self; |
|
_bgScrollView.clipsToBounds = NO; |
|
// 是否按照页(默认以scrollview的宽度或高度为一页) |
|
_bgScrollView.pagingEnabled = YES; |
|
|
|
// 是否显示右侧边界显示的竖向指示条 |
|
_bgScrollView.showsVerticalScrollIndicator = NO; |
|
|
|
// 是否显示底侧边界显示的横向指示条 |
|
_bgScrollView.showsHorizontalScrollIndicator = NO; |
|
|
|
// 是否显示侧边界显示的指示条的颜色样式 |
|
_bgScrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite; |
|
|
|
} |
|
return _bgScrollView; |
|
} |
|
|
|
-(EllipsePageControl *)pageControl |
|
{ |
|
if (!_pageControl) |
|
{ |
|
_pageControl = [[EllipsePageControl alloc] init]; |
|
_pageControl.backgroundColor = KKClearColor; |
|
_pageControl.otherColor = KKGrey153; |
|
_pageControl.currentColor = mainColor; |
|
} |
|
return _pageControl; |
|
} |
|
|
|
- (void)setWatchArr:(NSArray *)watchArr |
|
{ |
|
_watchArr = watchArr; |
|
self.pageControl.hidden = watchArr.count > 1 ? NO : YES; |
|
self.bgScrollView.contentSize = CGSizeMake(self.bgScrollView.width *watchArr.count, 188); |
|
self.pageControl.numberOfPages = watchArr.count; |
|
CGFloat ww = watchArr.count*6+watchArr.count*8; |
|
[self.pageControl mas_remakeConstraints:^(MASConstraintMaker *make) { |
|
make.centerX.equalTo(self); |
|
make.top.equalTo(self.bgScrollView.mas_bottom).offset(5); |
|
make.size.mas_equalTo(CGSizeMake(ww, 10)); |
|
}]; |
|
for (UIView *views in self.bgScrollView.subviews) |
|
{ |
|
[views removeFromSuperview]; |
|
} |
|
[watchArr enumerateObjectsUsingBlock:^(Device *dev, NSUInteger idx, BOOL * _Nonnull stop) { |
|
[self subWatchView:CGRectMake(self.bgScrollView.width*idx+5, 0,self.bgScrollView.width-10 , 188) devModel:dev]; |
|
}]; |
|
} |
|
|
|
- (void)subWatchView:(CGRect)fromt devModel:(Device *)dev |
|
{ |
|
|
|
UIView *bgView = [UICommon ui_view:fromt backgroundColor:KKWhiteColorColor cornerRadius:12 borderWidth:0 borderColor:KKWhiteColorColor]; |
|
[self.bgScrollView addSubview:bgView]; |
|
|
|
|
|
UIImageView *iconImg = [UICommon ui_imageView:CGRectZero fileName:[dev.sex isEqualToString:@"girl"] ? @"icon_girl_head_portrait" : @"icon_boy_head_portrait"]; |
|
if (dev.avator && ![dev.avator containsString:@"/default.jpg"]) |
|
[iconImg sd_setImageWithURL:[NSURL URLWithString:dev.avator] placeholderImage:ImageName_(@"")]; |
|
iconImg.layer.cornerRadius = 12; |
|
iconImg.layer.masksToBounds = YES; |
|
self.iconImg = iconImg; |
|
[bgView addSubview:iconImg]; |
|
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.top.equalTo(bgView).offset(15); |
|
make.left.equalTo(bgView).offset(15); |
|
make.size.mas_equalTo(CGSizeMake(64, 64)); |
|
}]; |
|
|
|
|
|
/// 昵称 |
|
UILabel *nameLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(20) textColor:KKTextBlackColor text:dev.name Radius:0]; |
|
self.nameLabel = nameLabel; |
|
[bgView addSubview:nameLabel]; |
|
[nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(iconImg.mas_right).offset(10); |
|
make.bottom.equalTo(iconImg.mas_centerY).inset(3); |
|
}]; |
|
|
|
UILabel *msgLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:Font_(14) textColor:KKGrey163 text:@"点击查看设备信息" Radius:0]; |
|
//self.msgLabel = msgLabel; |
|
[bgView addSubview:msgLabel]; |
|
[msgLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(nameLabel); |
|
make.right.equalTo(bgView.mas_right).inset(15); |
|
make.top.equalTo(iconImg.mas_centerY).offset(3); |
|
}]; |
|
|
|
/// 右箭头 |
|
UIImageView *rightImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_enter_gray"]; |
|
[bgView addSubview:rightImg]; |
|
[rightImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerY.equalTo(iconImg); |
|
make.right.equalTo(bgView.mas_right).inset(15); |
|
make.size.mas_equalTo(rightImg.image.size); |
|
}]; |
|
|
|
/// 电量信息View |
|
UIView *kwhView = [[UIView alloc] init]; |
|
kwhView.backgroundColor = dev.battery.intValue <= 25 ? RGBA(255, 94, 16, .2) : RGBA(16, 199, 114, .2); |
|
kwhView.layer.cornerRadius = 10; |
|
kwhView.layer.masksToBounds = YES; |
|
[bgView addSubview:kwhView]; |
|
[kwhView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.equalTo(nameLabel.mas_right).offset(5); |
|
make.centerY.equalTo(nameLabel); |
|
make.size.mas_equalTo(CGSizeMake(60, 20)); |
|
}]; |
|
|
|
NSString *imageName = @"icon_home_electricity_50"; |
|
if(dev.battery.intValue == 0) |
|
imageName = @"icon_home_electricity_0"; |
|
else if (dev.battery.intValue > 0 && dev.battery.intValue < 50) |
|
imageName = @"icon_home_electricity_25"; |
|
else if (dev.battery.intValue >= 50 && dev.battery.intValue < 75) |
|
imageName = @"icon_home_electricity_50"; |
|
else if (dev.battery.intValue >= 75 && dev.battery.intValue < 100) |
|
imageName = @"icon_home_electricity_75"; |
|
else if (dev.battery.intValue == 100) |
|
imageName = @"icon_home_electricity_100"; |
|
|
|
/// 电量 |
|
UIImageView *kwhImg = [UICommon ui_imageView:CGRectZero fileName:imageName]; |
|
self.kwhImg = kwhImg; |
|
[kwhView addSubview:kwhImg]; |
|
[kwhImg mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerY.equalTo(kwhView); |
|
make.left.equalTo(kwhView).offset(6); |
|
make.size.mas_equalTo(CGSizeMake(Adapted(16), Adapted(16))); |
|
}]; |
|
|
|
/// 电量 |
|
UILabel *kwhLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:Font_(10) textColor:dev.battery.intValue <= 25 ? RGB(255, 94, 16) : RGB(16, 199, 114) text:[NSString stringWithFormat:@"%@%%",dev.battery] Radius:0]; |
|
self.kwhLabel = kwhLabel; |
|
[kwhView addSubview:kwhLabel]; |
|
[kwhLabel mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.centerY.equalTo(kwhView); |
|
make.left.equalTo(kwhImg.mas_right).offset(5); |
|
}]; |
|
|
|
UIButton *msgbtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(0) normalColor:KKWhiteColorColor normalText:@"" click:^(id x) { |
|
|
|
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; |
|
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"EditDeviceViewController"]; |
|
[vc setValue:@(NO) forKey:@"isAdd"]; |
|
[[UICommon currentVC].navigationController pushViewController:vc animated:YES]; |
|
}]; |
|
[bgView addSubview:msgbtn]; |
|
[msgbtn mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(bgView); |
|
make.top.equalTo(iconImg.mas_top); |
|
make.bottom.equalTo(iconImg.mas_bottom); |
|
}]; |
|
|
|
UIView *btnView = [UICommon ui_view:CGRectZero backgroundColor:KKClearColor cornerRadius:0 borderWidth:0 borderColor:KKWhiteColorColor]; |
|
self.btnView = btnView; |
|
[bgView addSubview:btnView]; |
|
[btnView mas_makeConstraints:^(MASConstraintMaker *make) { |
|
make.left.right.equalTo(bgView); |
|
make.top.equalTo(iconImg.mas_bottom).offset(28); |
|
make.height.mas_equalTo(60); |
|
}]; |
|
[self addMenuBtn:dev]; |
|
} |
|
|
|
//- (void)addMenuBtn:(NSArray *)titleArr ImageArr:(NSArray *)imageArr |
|
- (void)addMenuBtn:(Device *)dev |
|
{ |
|
for (UIButton *views in self.btnView.subviews) |
|
{ |
|
[views removeFromSuperview]; |
|
} |
|
self.btnArr = [NSMutableArray new]; |
|
|
|
|
|
NSMutableArray *titleArray = [NSMutableArray new]; |
|
NSMutableArray *imageArray = [NSMutableArray new]; |
|
|
|
if (dev.support_whiteList && dev.support_whiteList.intValue !=0) |
|
[titleArray addObject:@"管理员"]; |
|
else |
|
[titleArray addObject:@"电话本"]; |
|
[imageArray addObject:@"icon_phonebook"]; |
|
|
|
[titleArray addObject:@"手表短信"]; |
|
[imageArray addObject:@"icon_phonemessage"]; |
|
|
|
if(dev.support_step && dev.support_step.intValue == 1){ |
|
[titleArray addObject:@"计步"]; |
|
[imageArray addObject:@"icon_Pedometer"]; |
|
} |
|
|
|
if (dev.support_disturb && dev.support_disturb.intValue == 1) { |
|
[titleArray addObject:@"上课禁用"]; |
|
[imageArray addObject:@"icon_disabled"]; |
|
} |
|
|
|
|
|
// if(dev.support_video && dev.support_video.intValue != 0) |
|
// { |
|
// if (titleArray.count < 4) |
|
// { |
|
// [titleArray addObject:@"视频通话"]; |
|
// [imageArray addObject:@"icon_home_video_call"]; |
|
// } |
|
// } |
|
|
|
|
|
CGFloat masx = (ScreenWidth-30)/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, 0, masx, masx); |
|
[self.btnView addSubview:button]; |
|
[self.btnArr addObject:button]; |
|
} |
|
} |
|
|
|
- (void)buttonClickAction:(UIButton *)btn |
|
{ |
|
NSLog(@"%@",btn.currentTitle); |
|
NSString *title = btn.currentTitle; |
|
if([title isEqualToString:@"电话本"] || [title isEqualToString:@"管理员"]) |
|
{ |
|
[UICommon PusXibViewController:[ContactsViewController new] :@"ContactsViewController"]; |
|
} |
|
else if([title isEqualToString:@"手表短信"]) |
|
{ |
|
ShortMessageListViewController *vc = [[ShortMessageListViewController alloc] init]; |
|
[[UICommon currentVC].navigationController pushViewController:vc animated:YES]; |
|
} |
|
else if([title isEqualToString:@"计步"]) |
|
{ |
|
NewStepVC * vc = [NewStepVC new]; |
|
vc.hidesBottomBarWhenPushed = YES; |
|
[self.getViewController.navigationController pushViewController:vc animated:YES]; |
|
} |
|
else if([title isEqualToString:@"上课禁用"]) |
|
{ |
|
[UICommon PusXibViewController:[DisturbBanViewController new] :@"DisturbBanViewController"]; |
|
} |
|
// else if([title isEqualToString:@"视频通话"]) |
|
// { |
|
// [UICommon PusXibViewController:@"VideoCallViewController"]; |
|
// } |
|
} |
|
|
|
- (ZZBadgeButton *)createButtonWithTitle:(NSString *)title image:(NSString *)image |
|
{ |
|
ZZBadgeButton *customButton = [[ZZBadgeButton alloc] init]; |
|
customButton.titleLabel.font = FontADA_(12); |
|
[customButton setTitle:title forState:UIControlStateNormal]; |
|
[customButton setTitleColor:KKBlack20 forState:UIControlStateNormal]; |
|
[customButton setImage:[UIImage imageNamed:image] forState:UIControlStateNormal]; |
|
return customButton; |
|
} |
|
|
|
|
|
|
|
//UIScrollView内视图移动停止移动时调用 |
|
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView |
|
{ |
|
CGFloat pageWidth = self.bgScrollView.width; |
|
NSInteger currentPage = floor((self.bgScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; |
|
NSLog(@"滚动到了第 %ld 页",currentPage); |
|
self.scrollViewTouch(currentPage); |
|
self.pageControl.currentPage = currentPage; |
|
} |
|
|
|
/// 滚动到指定页 |
|
- (void)scrollViewDidScrolls:(NSInteger)index |
|
{ |
|
CGFloat imageW = self.bgScrollView.width; |
|
// 指定页面 |
|
CGPoint position = CGPointMake(index*imageW, 0); |
|
self.pageControl.currentPage = index; |
|
[self.bgScrollView setContentOffset:position animated:NO]; |
|
} |
|
|
|
|
|
/* |
|
// Only override drawRect: if you perform custom drawing. |
|
// An empty implementation adversely affects performance during animation. |
|
- (void)drawRect:(CGRect)rect { |
|
// Drawing code |
|
} |
|
*/ |
|
|
|
@end
|
|
|