1
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#import "KBAppUpdateView.h"
|
||||
#import "KBLoginVM.h"
|
||||
|
||||
@interface KBAppUpdateView ()
|
||||
@property (nonatomic, strong) UIImageView *backgroundImageView;
|
||||
@@ -13,6 +14,7 @@
|
||||
@property (nonatomic, strong) UILabel *contentTitleLabel;
|
||||
@property (nonatomic, strong) UILabel *contentLabel;
|
||||
@property (nonatomic, strong) UIButton *upgradeButton;
|
||||
@property (nonatomic, strong) UIButton *cancelButton;
|
||||
@end
|
||||
|
||||
@implementation KBAppUpdateView
|
||||
@@ -50,6 +52,7 @@
|
||||
[self.versionBadgeView addSubview:self.versionLabel];
|
||||
[self addSubview:self.contentTitleLabel];
|
||||
[self addSubview:self.contentLabel];
|
||||
[self addSubview:self.cancelButton];
|
||||
[self addSubview:self.upgradeButton];
|
||||
}
|
||||
|
||||
@@ -65,7 +68,7 @@
|
||||
}];
|
||||
|
||||
[self.versionBadgeView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self).offset(KBFit(45.0));
|
||||
make.left.equalTo(self).offset(KBFit(18));
|
||||
make.top.equalTo(self).offset(KBFit(120.0));
|
||||
make.width.mas_equalTo(KBFit(73.0));
|
||||
make.height.mas_equalTo(KBFit(23.0));
|
||||
@@ -76,24 +79,19 @@
|
||||
}];
|
||||
|
||||
[self.contentTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self).offset(KBFit(45.0));
|
||||
make.top.equalTo(self).offset(KBFit(181.0));
|
||||
make.left.equalTo(self.versionBadgeView);
|
||||
make.top.equalTo(self.versionBadgeView.mas_bottom).offset(KBFit(15));
|
||||
make.right.lessThanOrEqualTo(self).offset(-KBFit(20.0));
|
||||
}];
|
||||
|
||||
[self.contentLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self).offset(KBFit(45.0));
|
||||
make.left.equalTo(self.contentTitleLabel);
|
||||
make.top.equalTo(self.contentTitleLabel.mas_bottom).offset(KBFit(8.0));
|
||||
make.right.lessThanOrEqualTo(self).offset(-KBFit(20.0));
|
||||
make.right.lessThanOrEqualTo(self).offset(-KBFit(18));
|
||||
make.bottom.lessThanOrEqualTo(self.upgradeButton.mas_top).offset(-KBFit(16.0));
|
||||
}];
|
||||
|
||||
[self.upgradeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(self);
|
||||
make.bottom.equalTo(self).offset(-KBFit(12.0));
|
||||
make.width.mas_equalTo(KBFit(230.0));
|
||||
make.height.mas_equalTo(KBFit(45.0));
|
||||
}];
|
||||
|
||||
[self kb_updateButtonsLayout];
|
||||
}
|
||||
|
||||
- (void)applyDefaultTexts {
|
||||
@@ -105,6 +103,8 @@
|
||||
KBLocalized(@"SSSSSSSSSSSSSSSSSSS")
|
||||
];
|
||||
self.upgradeButtonTitle = KBLocalized(@"立即升级");
|
||||
self.cancelButtonTitle = KBLocalized(@"取消");
|
||||
self.showsCancelButton = NO;
|
||||
}
|
||||
|
||||
#pragma mark - Actions
|
||||
@@ -115,6 +115,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)onTapCancel {
|
||||
if ([self.delegate respondsToSelector:@selector(appUpdateViewDidTapCancel:)]) {
|
||||
[self.delegate appUpdateViewDidTapCancel:self];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Setters
|
||||
|
||||
- (void)setBackgroundImageName:(NSString *)backgroundImageName {
|
||||
@@ -151,6 +157,34 @@
|
||||
[self.upgradeButton setTitle:_upgradeButtonTitle forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
- (void)setCancelButtonTitle:(NSString *)cancelButtonTitle {
|
||||
_cancelButtonTitle = [cancelButtonTitle copy];
|
||||
[self.cancelButton setTitle:_cancelButtonTitle forState:UIControlStateNormal];
|
||||
}
|
||||
|
||||
- (void)setShowsCancelButton:(BOOL)showsCancelButton {
|
||||
_showsCancelButton = showsCancelButton;
|
||||
[self kb_updateButtonsLayout];
|
||||
}
|
||||
|
||||
- (void)setUpdateInfo:(KBAppUpdateInfo *)updateInfo {
|
||||
_updateInfo = updateInfo;
|
||||
if (!updateInfo) { return; }
|
||||
self.showsCancelButton = !updateInfo.forceUpdate;
|
||||
if (!updateInfo.forceUpdate) {
|
||||
self.cancelButtonTitle = KBLocalized(@"取消");
|
||||
}
|
||||
self.upgradeButtonTitle = KBLocalized(@"更新");
|
||||
self.contentTitleText = KBLocalized(@"更新内容");
|
||||
NSString *versionName = updateInfo.latestVersionName ?: @"";
|
||||
if (versionName.length > 0 && ![versionName hasPrefix:@"V"] && ![versionName hasPrefix:@"v"]) {
|
||||
versionName = [NSString stringWithFormat:@"V%@", versionName];
|
||||
}
|
||||
self.versionText = versionName ?: @"";
|
||||
NSArray<NSString *> *items = [self kb_contentItemsFromText:updateInfo.releaseNotes];
|
||||
self.contentItems = items;
|
||||
}
|
||||
|
||||
#pragma mark - Helpers
|
||||
|
||||
- (NSString *)formattedContentItems:(NSArray<NSString *> *)items {
|
||||
@@ -168,6 +202,55 @@
|
||||
return [lines componentsJoinedByString:@"\n"];
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)kb_contentItemsFromText:(nullable NSString *)text {
|
||||
if (![text isKindOfClass:NSString.class]) { return @[]; }
|
||||
NSString *trimmed = [text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if (trimmed.length == 0) { return @[]; }
|
||||
NSCharacterSet *splitSet = [NSCharacterSet characterSetWithCharactersInString:@"\n;"];
|
||||
NSArray<NSString *> *parts = [trimmed componentsSeparatedByCharactersInSet:splitSet];
|
||||
NSMutableArray<NSString *> *items = [NSMutableArray array];
|
||||
for (NSString *part in parts) {
|
||||
NSString *piece = [part stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
||||
if (piece.length > 0) {
|
||||
[items addObject:piece];
|
||||
}
|
||||
}
|
||||
return items.count > 0 ? items : @[trimmed];
|
||||
}
|
||||
|
||||
- (void)kb_updateButtonsLayout {
|
||||
if (self.showsCancelButton) {
|
||||
self.cancelButton.hidden = NO;
|
||||
[self.cancelButton mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self).offset(KBFit(24.0));
|
||||
make.bottom.equalTo(self).offset(-KBFit(12.0));
|
||||
make.height.mas_equalTo(KBFit(45.0));
|
||||
}];
|
||||
[self.upgradeButton mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self.cancelButton.mas_right).offset(KBFit(12.0));
|
||||
make.right.equalTo(self).offset(-KBFit(24.0));
|
||||
make.bottom.equalTo(self.cancelButton);
|
||||
make.height.equalTo(self.cancelButton);
|
||||
make.width.equalTo(self.cancelButton);
|
||||
}];
|
||||
} else {
|
||||
self.cancelButton.hidden = YES;
|
||||
[self.cancelButton mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(self);
|
||||
make.bottom.equalTo(self).offset(-KBFit(12.0));
|
||||
make.width.mas_equalTo(0.0);
|
||||
make.height.mas_equalTo(0.0);
|
||||
}];
|
||||
[self.upgradeButton mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(self);
|
||||
make.bottom.equalTo(self).offset(-KBFit(12.0));
|
||||
make.width.mas_equalTo(KBFit(230.0));
|
||||
make.height.mas_equalTo(KBFit(45.0));
|
||||
}];
|
||||
}
|
||||
[self layoutIfNeeded];
|
||||
}
|
||||
|
||||
#pragma mark - Lazy
|
||||
|
||||
- (UIImageView *)backgroundImageView {
|
||||
@@ -241,4 +324,19 @@
|
||||
return _upgradeButton;
|
||||
}
|
||||
|
||||
- (UIButton *)cancelButton {
|
||||
if (!_cancelButton) {
|
||||
_cancelButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
_cancelButton.backgroundColor = [UIColor whiteColor];
|
||||
_cancelButton.layer.cornerRadius = KBFit(22.5);
|
||||
_cancelButton.layer.masksToBounds = YES;
|
||||
_cancelButton.layer.borderWidth = KB_ONE_PIXEL;
|
||||
_cancelButton.layer.borderColor = [UIColor colorWithHex:0x002339].CGColor;
|
||||
_cancelButton.titleLabel.font = [KBFont bold:14.0];
|
||||
[_cancelButton setTitleColor:[UIColor colorWithHex:0x002339] forState:UIControlStateNormal];
|
||||
[_cancelButton addTarget:self action:@selector(onTapCancel) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _cancelButton;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user