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.

379 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