
主要变更: 1. 新增 EPImageUploader.swift 和 EPProgressHUD.swift,提供图片批量上传和进度显示功能。 2. 新建 EPMomentAPISwiftHelper.swift,封装动态 API 的 Swift 版本。 3. 更新 EPMomentPublishViewController,集成新上传功能并实现发布成功通知。 4. 创建多个文档,包括实施报告、检查清单和快速使用指南,详细记录功能实现和使用方法。 5. 更新 Bridging Header,确保 Swift 和 Objective-C 代码的互操作性。 此功能旨在提升用户体验,简化动态发布流程,并提供清晰的文档支持。
165 lines
6.0 KiB
Objective-C
165 lines
6.0 KiB
Objective-C
//
|
|
// EPMineHeaderView.m
|
|
// YuMi
|
|
//
|
|
// Created by AI on 2025-10-09.
|
|
// Copyright © 2025 YuMi. All rights reserved.
|
|
//
|
|
|
|
#import "EPMineHeaderView.h"
|
|
#import <Masonry/Masonry.h>
|
|
#import <SDWebImage/SDWebImage.h>
|
|
|
|
@interface EPMineHeaderView ()
|
|
|
|
/// 头像视图
|
|
@property (nonatomic, strong) UIImageView *avatarImageView;
|
|
|
|
/// 昵称标签
|
|
@property (nonatomic, strong) UILabel *nicknameLabel;
|
|
|
|
/// ID 标签
|
|
@property (nonatomic, strong) UILabel *idLabel;
|
|
|
|
/// 设置按钮
|
|
@property (nonatomic, strong) UIButton *settingsButton;
|
|
|
|
/// 关注按钮
|
|
@property (nonatomic, strong) UIButton *followButton;
|
|
|
|
/// 粉丝按钮
|
|
@property (nonatomic, strong) UIButton *fansButton;
|
|
|
|
@end
|
|
|
|
@implementation EPMineHeaderView
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
if (self = [super initWithFrame:frame]) {
|
|
[self setupUI];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)setupUI {
|
|
// 大圆形头像
|
|
self.avatarImageView = [[UIImageView alloc] init];
|
|
self.avatarImageView.layer.cornerRadius = 60;
|
|
self.avatarImageView.layer.masksToBounds = YES;
|
|
self.avatarImageView.layer.borderWidth = 3;
|
|
self.avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor;
|
|
self.avatarImageView.backgroundColor = [UIColor whiteColor];
|
|
self.avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
|
|
[self addSubview:self.avatarImageView];
|
|
|
|
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerX.equalTo(self);
|
|
make.top.equalTo(self).offset(60);
|
|
make.size.mas_equalTo(CGSizeMake(120, 120));
|
|
}];
|
|
|
|
// 昵称
|
|
self.nicknameLabel = [[UILabel alloc] init];
|
|
self.nicknameLabel.font = [UIFont boldSystemFontOfSize:24];
|
|
self.nicknameLabel.textColor = [UIColor whiteColor];
|
|
self.nicknameLabel.textAlignment = NSTextAlignmentCenter;
|
|
[self addSubview:self.nicknameLabel];
|
|
|
|
[self.nicknameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerX.equalTo(self);
|
|
make.top.equalTo(self.avatarImageView.mas_bottom).offset(16);
|
|
}];
|
|
|
|
// ID
|
|
self.idLabel = [[UILabel alloc] init];
|
|
self.idLabel.font = [UIFont systemFontOfSize:14];
|
|
self.idLabel.textColor = [UIColor whiteColor];
|
|
self.idLabel.alpha = 0.8;
|
|
self.idLabel.textAlignment = NSTextAlignmentCenter;
|
|
[self addSubview:self.idLabel];
|
|
|
|
[self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.centerX.equalTo(self);
|
|
make.top.equalTo(self.nicknameLabel.mas_bottom).offset(8);
|
|
}];
|
|
|
|
// 设置按钮(右上角)
|
|
self.settingsButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[self.settingsButton setImage:[UIImage systemImageNamed:@"gearshape"] forState:UIControlStateNormal];
|
|
self.settingsButton.tintColor = [UIColor whiteColor];
|
|
self.settingsButton.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.2];
|
|
self.settingsButton.layer.cornerRadius = 20;
|
|
[self.settingsButton addTarget:self action:@selector(settingsButtonTapped) forControlEvents:UIControlEventTouchUpInside];
|
|
[self addSubview:self.settingsButton];
|
|
|
|
[self.settingsButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.equalTo(self).offset(50);
|
|
make.trailing.equalTo(self).offset(-20);
|
|
make.size.mas_equalTo(CGSizeMake(40, 40));
|
|
}];
|
|
|
|
// 关注按钮
|
|
self.followButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[self.followButton setTitle:@"关注" forState:UIControlStateNormal];
|
|
[self.followButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
|
self.followButton.titleLabel.font = [UIFont systemFontOfSize:16];
|
|
self.followButton.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.2];
|
|
self.followButton.layer.cornerRadius = 20;
|
|
[self addSubview:self.followButton];
|
|
|
|
[self.followButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.equalTo(self.idLabel.mas_bottom).offset(20);
|
|
make.centerX.equalTo(self).offset(-50);
|
|
make.size.mas_equalTo(CGSizeMake(80, 40));
|
|
}];
|
|
|
|
// 粉丝按钮
|
|
self.fansButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[self.fansButton setTitle:@"粉丝" forState:UIControlStateNormal];
|
|
[self.fansButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
|
self.fansButton.titleLabel.font = [UIFont systemFontOfSize:16];
|
|
self.fansButton.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.2];
|
|
self.fansButton.layer.cornerRadius = 20;
|
|
[self addSubview:self.fansButton];
|
|
|
|
[self.fansButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.equalTo(self.idLabel.mas_bottom).offset(20);
|
|
make.centerX.equalTo(self).offset(50);
|
|
make.size.mas_equalTo(CGSizeMake(80, 40));
|
|
}];
|
|
}
|
|
|
|
- (void)updateWithUserInfo:(NSDictionary *)userInfoDict {
|
|
// 更新昵称
|
|
NSString *nickname = userInfoDict[@"nickname"] ?: @"未设置昵称";
|
|
self.nicknameLabel.text = nickname;
|
|
|
|
// 更新 ID
|
|
NSString *uid = userInfoDict[@"uid"] ?: @"";
|
|
self.idLabel.text = [NSString stringWithFormat:@"ID:%@", uid];
|
|
|
|
// 更新关注数
|
|
NSNumber *following = userInfoDict[@"following"] ?: @0;
|
|
[self.followButton setTitle:[NSString stringWithFormat:@"关注 %@", following] forState:UIControlStateNormal];
|
|
|
|
// 更新粉丝数
|
|
NSNumber *followers = userInfoDict[@"followers"] ?: @0;
|
|
[self.fansButton setTitle:[NSString stringWithFormat:@"粉丝 %@", followers] forState:UIControlStateNormal];
|
|
|
|
// 加载头像
|
|
NSString *avatarURL = userInfoDict[@"avatar"];
|
|
if (avatarURL && avatarURL.length > 0) {
|
|
[self.avatarImageView sd_setImageWithURL:[NSURL URLWithString:avatarURL]
|
|
placeholderImage:[UIImage imageNamed:@"default_avatar"]];
|
|
} else {
|
|
// 使用默认头像
|
|
self.avatarImageView.image = [UIImage imageNamed:@"default_avatar"];
|
|
}
|
|
}
|
|
|
|
- (void)settingsButtonTapped {
|
|
NSLog(@"[EPMineHeaderView] 设置按钮点击");
|
|
// TODO: 发送通知或回调给父视图
|
|
}
|
|
|
|
@end |