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.
 

642 lines
28 KiB

//
// TFAudioDetailHeaderView.m
// TFReader
//
// Created by 谢腾飞 on 2020/12/25.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import "TFAudioDetailHeaderView.h"
#import "TFUpgradeMemberController.h"
#import "TFCollectionManager.h"
#import "TFReadRecordManager.h"
#import "TFAdvertisementManager.h"
#import "UIView+AZGradient.h"
#import "UILabel+LineBreak.h"
#import "UIView+BorderLine.h"
@interface TFAudioDetailHeaderView ()
{
UIView *contentView;
UILabel *navTitleLabel;
UIImageView *coverImageView;
UILabel *audioTitleLabel;
UILabel *hotLabel;
UIImageView *authorIcon;
UILabel *authorLabel;
UILabel *collectNumLabel;
TFButton *collectButton;
UILabel *tagView;
UIView *introductionView;
UILabel *introductionLabel;
TFButton *moreButton;
UIButton *vipButton;
// 展开详情后视图样式
UILabel *introductionBottomLabel;
TFButton *packUpButton;
TFButton *bottomPackUpButton;
TFAdvertisementManager *adView;
}
@property (nonatomic ,strong) YYTextView *introductionTextView;
@end
@implementation TFAudioDetailHeaderView
- (instancetype)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor clearColor];
self.frame = frame;
[self createSubViews];
}
return self;
}
- (void)createSubViews
{
contentView = [[UIView alloc] init];
contentView.backgroundColor = [UIColor clearColor];
[self addSubview:contentView];
[contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.mas_left);
make.top.mas_equalTo(self.mas_top);
make.width.mas_equalTo(self.mas_width);
make.height.mas_equalTo(self.mas_height);
}];
navTitleLabel = [[UILabel alloc] init];
navTitleLabel.alpha = 0;
navTitleLabel.textColor = kWhiteColor;
navTitleLabel.textAlignment = NSTextAlignmentLeft;
navTitleLabel.font = kBoldMainFont;
[contentView addSubview:navTitleLabel];
[navTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kHalfMargin + 44);
make.top.mas_equalTo(PUB_NAVBAR_HEIGHT - 44);
make.width.mas_equalTo(SCREEN_WIDTH / 2 - 44);
make.height.mas_equalTo(44);
}];
coverImageView = [[UIImageView alloc] initWithCornerRadiusAdvance:4 rectCornerType:UIRectCornerAllCorners];
coverImageView.image = HoldImage;
coverImageView.contentMode = UIViewContentModeScaleAspectFill;
[contentView addSubview:coverImageView];
[coverImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.top.mas_equalTo(PUB_NAVBAR_HEIGHT + kHalfMargin);
make.width.mas_equalTo(SCREEN_WIDTH / 4 + kMargin);
make.height.mas_equalTo(kGeometricHeight((SCREEN_WIDTH / 4 + kMargin), 3, 4));
}];
audioTitleLabel = [[UILabel alloc] init];
audioTitleLabel.textColor = kWhiteColor;
audioTitleLabel.textAlignment = NSTextAlignmentLeft;
audioTitleLabel.font = kBoldFont22;
[contentView addSubview:audioTitleLabel];
[audioTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(coverImageView.mas_right).with.offset(kHalfMargin);
make.top.mas_equalTo(coverImageView.mas_top);
make.right.mas_equalTo(contentView.mas_right).with.offset(- kHalfMargin);
make.height.mas_equalTo(30);
}];
tagView = [[UILabel alloc] init];
tagView.backgroundColor = [UIColor clearColor];
tagView.textColor = kColorRGBA(255, 255, 255, 0.9);
tagView.textAlignment = NSTextAlignmentLeft;
tagView.font = kFont12;
[contentView addSubview:tagView];
[tagView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(audioTitleLabel.mas_left);
make.top.mas_equalTo(audioTitleLabel.mas_bottom).with.offset(kQuarterMargin);
make.right.mas_equalTo(audioTitleLabel.mas_right);
make.height.mas_equalTo(25);
}];
hotLabel = [[UILabel alloc] init];
hotLabel.backgroundColor = [UIColor clearColor];
hotLabel.textColor = kColorRGBA(255, 255, 255, 0.9);
hotLabel.textAlignment = NSTextAlignmentLeft;
hotLabel.font = kFont12;
[contentView addSubview:hotLabel];
[hotLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(audioTitleLabel.mas_left);
make.top.mas_equalTo(tagView.mas_bottom);
make.right.mas_equalTo(audioTitleLabel.mas_right);
make.height.mas_equalTo(tagView.mas_height);
}];
collectNumLabel = [[UILabel alloc] init];
collectNumLabel.backgroundColor = [UIColor clearColor];
collectNumLabel.textColor = kColorRGBA(255, 255, 255, 0.9);
collectNumLabel.textAlignment = NSTextAlignmentLeft;
collectNumLabel.font = kFont12;
[contentView addSubview:collectNumLabel];
[collectNumLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(audioTitleLabel.mas_left);
make.top.mas_equalTo(hotLabel.mas_bottom);
make.right.mas_equalTo(audioTitleLabel.mas_right);
make.height.mas_equalTo(tagView.mas_height);
}];
collectButton = [[TFButton alloc] initWithFrame:CGRectMake(1, 1, 1, 1) buttonTitle:TFLocalizedString(@"收藏") buttonImageName:@"audio_collection_heart" buttonIndicator:TFButtonIndicatorTitleRight];
collectButton.buttonImageScale = 0.4;
collectButton.buttonTitleFont = kFont12;
collectButton.graphicDistance = 2;
collectButton.buttonTitleColor = kWhiteColor;
collectButton.hidden = YES;
collectButton.layer.cornerRadius = 14;
collectButton.clipsToBounds = YES;
[collectButton addTarget:self action:@selector(collectionButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:collectButton];
[collectButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(contentView.mas_right).with.offset(-kMargin);
make.bottom.mas_equalTo(coverImageView.mas_bottom);
make.height.mas_equalTo(28);
make.width.mas_equalTo(80);
}];
authorIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"audio_detail_author"]];
authorIcon.hidden = YES;
[contentView addSubview:authorIcon];
[authorIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(collectNumLabel.mas_left);
make.bottom.mas_equalTo(coverImageView.mas_bottom).with.offset(- 2);
make.width.height.mas_equalTo(20);
}];
authorLabel = [[UILabel alloc] init];
authorLabel.backgroundColor = [UIColor clearColor];
authorLabel.textColor = kWhiteColor;
authorLabel.textAlignment = NSTextAlignmentLeft;
authorLabel.font = kMainFont;
[contentView addSubview:authorLabel];
[authorLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(authorIcon.mas_right).with.offset(kHalfMargin);
make.bottom.mas_equalTo(authorIcon.mas_bottom);
make.right.mas_equalTo(collectButton.mas_left).with.offset(- kHalfMargin);
make.height.mas_equalTo(authorIcon.mas_height);
}];
introductionView = [[UIView alloc] init];
introductionView.backgroundColor = kColorRGBA(0, 0, 0, 0.2);
introductionView.layer.cornerRadius = 6;
introductionView.hidden = YES;
introductionView.userInteractionEnabled = YES;
[contentView addSubview:introductionView];
introductionLabel = [[UILabel alloc] init];
introductionLabel.textColor = kColorRGBA(255, 255, 255, 0.9);
introductionLabel.font = kFont12;
introductionLabel.backgroundColor = [UIColor clearColor];
introductionLabel.numberOfLines = 0;
introductionLabel.userInteractionEnabled = YES;
[contentView addSubview:introductionLabel];
[introductionLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin + kHalfMargin);
make.right.mas_equalTo(contentView.mas_right).with.offset(- kMargin - kHalfMargin);
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kMargin + kHalfMargin);
make.height.mas_equalTo(80);
}];
[introductionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(introductionLabel.mas_left).with.offset(- kHalfMargin);
make.right.mas_equalTo(introductionLabel.mas_right).with.offset(kHalfMargin);
make.top.mas_equalTo(introductionLabel.mas_top).with.offset(- kQuarterMargin);
make.bottom.mas_equalTo(introductionLabel.mas_bottom).with.offset(kQuarterMargin);
}];
moreButton = [[TFButton alloc] initWithFrame:CGRectZero buttonTitle:TFLocalizedString(@"展开简介") buttonImageName:@"public_down_arrow" buttonIndicator:TFButtonIndicatorTitleLeft];
moreButton.buttonTitleFont = kFont10;
moreButton.buttonImageScale = 0.5;
moreButton.graphicDistance = 3;
moreButton.buttonTintColor = kWhiteColor;
moreButton.backgroundColor = kColorRGBA(255, 255, 255, 0.2);
moreButton.layer.cornerRadius = 10;
[moreButton addTarget:self action:@selector(spreadClick) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:moreButton];
[moreButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(introductionLabel.mas_right).with.offset(- kQuarterMargin);
make.bottom.mas_equalTo(introductionLabel.mas_bottom).with.offset(- 2.5);
make.width.mas_equalTo(80);
make.height.mas_equalTo(20);
}];
vipButton = [UIButton buttonWithType:UIButtonTypeCustom];
vipButton.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
vipButton.contentHorizontalAlignment = UIControlContentVerticalAlignmentFill;
[vipButton setImage:[UIImage imageNamed:TFLocalizedString(@"audio_detail_member")] forState:UIControlStateNormal];
[vipButton addTarget:self action:@selector(vipButtonClick) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:vipButton];
[vipButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.top.mas_equalTo(introductionView.mas_bottom).with.offset(kMargin);
make.width.mas_equalTo(SCREEN_WIDTH - 2 * kMargin);
make.height.mas_equalTo(CGFLOAT_MIN);
}];
adView = [[TFAdvertisementManager alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH - kMargin * 2, kGeometricHeight(SCREEN_WIDTH - kMargin * 2, 3, 1)) advertisementType:TFAdvertisementTypeNovel advertisementPosition:TFAdvertisementPositionNone];
adView.backgroundColor = [UIColor clearColor];
adView.userInteractionEnabled = YES;
[contentView addSubview:adView];
[adView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.width.mas_equalTo(SCREEN_WIDTH - 2 * kMargin);
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH - kMargin, 3, 1));
make.top.mas_equalTo(vipButton.mas_bottom).with.offset(kMargin);
make.bottom.mas_equalTo(contentView.mas_bottom).with.offset(- kMargin).priorityLow();
}];
// 展开详情后视图
introductionBottomLabel = [[UILabel alloc] init];
introductionBottomLabel.text = TFLocalizedString(@"简介");
introductionBottomLabel.textColor = kWhiteColor;
introductionBottomLabel.textAlignment = NSTextAlignmentLeft;
introductionBottomLabel.font = kBoldFont22;
introductionBottomLabel.alpha = 0;
[contentView addSubview:introductionBottomLabel];
[introductionBottomLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kMargin);
make.width.mas_equalTo(SCREEN_WIDTH / 2);
make.height.mas_equalTo(30);
}];
packUpButton = [[TFButton alloc] initWithFrame:CGRectZero buttonTitle:TFLocalizedString(@"收起简介") buttonImageName:@"public_down_arrow" buttonIndicator:TFButtonIndicatorTitleLeft];
packUpButton.alpha = 0;
packUpButton.transformImageView = YES;
packUpButton.buttonTitleFont = kFont10;
packUpButton.buttonImageScale = 0.5;
packUpButton.graphicDistance = 3;
packUpButton.buttonTintColor = kWhiteColor;
packUpButton.backgroundColor = kColorRGBA(255, 255, 255, 0.2);
packUpButton.layer.cornerRadius = 10;
[packUpButton addTarget:self action:@selector(packUpClick) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:packUpButton];
[packUpButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(contentView.mas_right).with.offset(- kMargin);
make.centerY.mas_equalTo(introductionBottomLabel.mas_centerY);
make.width.mas_equalTo(80);
make.height.mas_equalTo(20);
}];
self.introductionTextView = [[YYTextView alloc] init];
self.introductionTextView.editable = NO;
self.introductionTextView.textColor = kWhiteColor;
self.introductionTextView.font = kMainFont;
self.introductionTextView.alpha = 0;
self.introductionTextView.showsVerticalScrollIndicator = NO;
self.introductionTextView.showsHorizontalScrollIndicator = NO;
[contentView addSubview:self.introductionTextView];
[self.introductionTextView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(introductionBottomLabel.mas_left);
make.right.mas_equalTo(packUpButton.mas_right);
make.top.mas_equalTo(introductionBottomLabel.mas_bottom).with.offset(kHalfMargin);
make.bottom.mas_equalTo(contentView.mas_bottom).priorityLow();
}];
bottomPackUpButton = [[TFButton alloc] initWithFrame:CGRectZero buttonTitle:TFLocalizedString(@"点击收起") buttonImageName:@"public_down_arrow" buttonIndicator:TFButtonIndicatorTitleLeft];
bottomPackUpButton.alpha = 0;
bottomPackUpButton.transformImageView = YES;
bottomPackUpButton.buttonTitleFont = kMainFont;
bottomPackUpButton.buttonImageScale = 0.4;
bottomPackUpButton.graphicDistance = 5;
bottomPackUpButton.buttonTintColor = kWhiteColor;
bottomPackUpButton.backgroundColor = kBlackTransparentColor;
bottomPackUpButton.layer.cornerRadius = 20;
[bottomPackUpButton addTarget:self action:@selector(packUpClick) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:bottomPackUpButton];
[bottomPackUpButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(contentView.mas_centerX);
make.bottom.mas_equalTo(contentView.mas_bottom).with.offset(- 2 * kMargin);
make.width.mas_equalTo(135);
make.height.mas_equalTo(40);
}];
}
- (void)setAudioModel:(TFProductionModel *)audioModel
{
_audioModel = audioModel;
collectButton.hidden = NO;
[coverImageView setImageWithURL:[NSURL URLWithString:audioModel.cover] placeholder:HoldImage options:YYWebImageOptionSetImageWithFadeAnimation completion:nil];
navTitleLabel.text = audioModel.name?:@"";
audioTitleLabel.text = audioModel.name?:@"";
hotLabel.text = audioModel.hot_num?:@"";
collectNumLabel.text = audioModel.total_favors?:@"";
authorIcon.hidden = NO;
authorLabel.text = audioModel.author.length > 0 ?audioModel.author:@"--";
NSMutableArray *tagArray = [NSMutableArray array];
for (TFTagModel *tagModel in audioModel.tag) {
[tagArray addObject:tagModel.tab];
}
tagView.text = [tagArray componentsJoinedByString:@"|"]?:@"";
[self reloadCollectionButtonState];
[vipButton mas_updateConstraints:^(MASConstraintMaker *make) {
if ([TFUserInfoManager shareInstance].isVip) {
make.top.mas_equalTo(introductionView.mas_bottom).with.offset(CGFLOAT_MIN);
make.height.mas_equalTo(CGFLOAT_MIN);
} else if (!audioModel.is_baoyue) {
make.top.mas_equalTo(introductionView.mas_bottom).with.offset(CGFLOAT_MIN);
make.height.mas_equalTo(CGFLOAT_MIN);
} else {
make.top.mas_equalTo(introductionView.mas_bottom).with.offset(kMargin);
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH - 2 * kMargin, 800, 90));
}
}];
adView.advertModel = audioModel;
[adView mas_updateConstraints:^(MASConstraintMaker *make) {
if (audioModel.ad_type == 0) {
make.top.mas_equalTo(vipButton.mas_bottom).with.offset(CGFLOAT_MIN);
make.height.mas_equalTo(CGFLOAT_MIN);
} else {
make.top.mas_equalTo(vipButton.mas_bottom).with.offset(kMargin);
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH - kMargin, audioModel.ad_width?:3, audioModel.ad_height?:1));
}
}];
[introductionBottomLabel mas_updateConstraints:^(MASConstraintMaker *make) {
if (audioModel.ad_type == 0) {
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kMargin);
} else {
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kHalfMargin + kMargin + kGeometricHeight(SCREEN_WIDTH - kMargin, audioModel.ad_width?:3, audioModel.ad_height?:1));
}
}];
introductionView.hidden = NO;
{
if (audioModel.production_descirption.length > 0) {
// 截取简介
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:audioModel.production_descirption?:@""];
attributedString.lineSpacing = 6;
attributedString.font = kFont12;
attributedString.color = kWhiteColor;
CGFloat maxWidth = SCREEN_WIDTH - 2 * (kMargin + kHalfMargin) - 120.0;
NSAttributedString *separatedString = [TFViewHelper getSubContentWithOriginalContent:attributedString labelWidth:maxWidth labelMaxLine:3];
introductionLabel.attributedText = separatedString;
[introductionLabel mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kMargin + kHalfMargin);
make.height.mas_equalTo([TFViewHelper boundsWithFont:kFont12 attributedText:separatedString needWidth:(SCREEN_WIDTH - 2 * (kMargin + kHalfMargin)) lineSpacing:6] + kHalfMargin);
}];
[introductionView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(introductionLabel.mas_top).with.offset(- kQuarterMargin);
make.bottom.mas_equalTo(introductionLabel.mas_bottom).with.offset(kQuarterMargin);
}];
moreButton.hidden = NO;
} else {
moreButton.hidden = YES;
[introductionLabel mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(CGFLOAT_MIN);
make.height.mas_equalTo(CGFLOAT_MIN);
}];
[introductionView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(introductionLabel.mas_top).with.offset(CGFLOAT_MIN);
make.bottom.mas_equalTo(introductionLabel.mas_bottom).with.offset(CGFLOAT_MIN);
}];
}
}
NSMutableAttributedString __block *attributedString = [[NSMutableAttributedString alloc] initWithString:audioModel.production_descirption?:@""];
attributedString.lineSpacing = 8;
attributedString.font = kMainFont;
attributedString.color = kWhiteColor;
[attributedString appendString:@"\n"];
if (audioModel.horizontal_cover.length > 0) {
WS(weakSelf)
[[YYWebImageManager sharedManager] requestImageWithURL:[NSURL URLWithString:audioModel.horizontal_cover?:@""] options:YYWebImageOptionSetImageWithFadeAnimation progress:nil transform:nil completion:^(UIImage * _Nullable image, NSURL * _Nonnull url, YYWebImageFromType from, YYWebImageStage stage, NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
YYAnimatedImageView *imageView = nil;
if (image) {
imageView = [[YYAnimatedImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(0, 0, SCREEN_WIDTH - 2 * kMargin, kGeometricHeight(SCREEN_WIDTH - 2 * kMargin, image.size.width, image.size.height));
}
NSMutableAttributedString *attachText = [NSMutableAttributedString attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.frame.size alignToFont:kMainFont alignment:YYTextVerticalAlignmentCenter];
[attributedString appendAttributedString:attachText];
weakSelf.introductionTextView.attributedText = attributedString;
});
}];
} else {
self.introductionTextView.attributedText = attributedString;
}
[self layoutIfNeeded];
if (self.changeIntroductionBlock) {
if ([[TFUserInfoManager shareInstance] isVip] || !audioModel.is_baoyue) {
self.changeIntroductionBlock(adView.bottom + kHalfMargin, YES);
} else {
self.changeIntroductionBlock(adView.bottom + kHalfMargin, YES);
}
}
}
- (void)setContentOffSetY:(CGFloat)contentOffSetY
{
_contentOffSetY = contentOffSetY;
if (contentOffSetY < self.bottom - PUB_NAVBAR_HEIGHT) {
navTitleLabel.alpha = 0;
[collectButton mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(contentView.mas_right).with.offset(- kMargin);
make.bottom.mas_equalTo(coverImageView.mas_bottom);
make.height.mas_equalTo(28);
make.width.mas_equalTo(80);
}];
} else if (contentOffSetY > 0){
navTitleLabel.alpha = 1;
[collectButton mas_remakeConstraints:^(MASConstraintMaker *make) {
//#if TF_Download_Mode && (TF_FB_Share_Mode || TF_Twitter_Share_Mode)
make.right.mas_equalTo(contentView.mas_right).with.offset(-2 *kHalfMargin - kMargin - 60);
//#elif TF_Download_Mode || TF_FB_Share_Mode || TF_Twitter_Share_Mode
// make.right.mas_equalTo(contentView.mas_right).with.offset(- kHalfMargin - kMargin - 30);
//#else
// make.right.mas_equalTo(contentView.mas_right).with.offset(- kMargin);
//#endif
make.centerY.mas_equalTo(navTitleLabel.mas_centerY);
make.height.mas_equalTo(28);
make.width.mas_equalTo(80);
}];
}
if ([[TFCollectionManager shareManagerWithProductionType:TFProductionTypeAudio] isCollectedWithProductionModel:self.audioModel]) {
[collectButton mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabelFont:kFont12 labelHeight:28 labelText:collectButton.buttonTitle] + 20);
}];
} else {
[collectButton mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabelFont:kFont12 labelHeight:28 labelText:collectButton.buttonTitle] + 30);
}];
}
[contentView mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.mas_top).with.offset(contentOffSetY);
make.height.mas_equalTo(self.mas_height).with.offset(contentOffSetY);
}];
}
// 展开详情
- (void)spreadClick
{
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
moreButton.alpha = 0;
introductionLabel.alpha = 0;
introductionView.alpha = 0;
vipButton.alpha = 0;
packUpButton.alpha = 1;
bottomPackUpButton.alpha = 1;
introductionBottomLabel.alpha = 1;
self.introductionTextView.alpha = 1;
}];
[adView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.width.mas_equalTo(SCREEN_WIDTH - 2 * kMargin);
if (self.audioModel.ad_type == 0) {
make.height.mas_equalTo(CGFLOAT_MIN);
} else {
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH - kMargin, self.audioModel.ad_width?:3, self.audioModel.ad_height?:1));
}
make.top.mas_equalTo(coverImageView.mas_bottom).with.offset(kMargin);
make.bottom.mas_equalTo(contentView.mas_bottom).with.offset(- kMargin).priorityLow();
}];
if (self.changeIntroductionBlock) {
self.changeIntroductionBlock(SCREEN_HEIGHT, NO);
}
}
// 收起详情
- (void)packUpClick
{
packUpButton.alpha = 0;
bottomPackUpButton.alpha = 0;
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
moreButton.alpha = 1;
introductionLabel.alpha = 1;
introductionView.alpha = 1;
vipButton.alpha = 1;
introductionBottomLabel.alpha = 0;
self.introductionTextView.alpha = 0;
} completion:^(BOOL finished) {
if (self.changeIntroductionBlock) {
self.changeIntroductionBlock(adView.bottom + kHalfMargin, YES);
}
}];
[adView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.width.mas_equalTo(SCREEN_WIDTH - 2 * kMargin);
if (self.audioModel.ad_type == 0) {
make.top.mas_equalTo(vipButton.mas_bottom).with.offset(CGFLOAT_MIN);
make.height.mas_equalTo(CGFLOAT_MIN);
} else {
make.top.mas_equalTo(vipButton.mas_bottom).with.offset(kMargin);
make.height.mas_equalTo(kGeometricHeight(SCREEN_WIDTH - kMargin, self.audioModel.ad_width?:3, self.audioModel.ad_height?:1));
}
make.bottom.mas_equalTo(contentView.mas_bottom).with.offset(- kMargin).priorityLow();
}];
}
- (void)vipButtonClick
{
WS(weakSelf)
TFUpgradeMemberController *vc = [[TFUpgradeMemberController alloc] init];
vc.paySuccessBlock = ^{
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Audio_Check_Recommend object:[TFUtilsHelper formatStringWithInteger:[[TFReadRecordManager shareManagerWithProductionType:TFProductionTypeAudio] getReadingRecordChapter_idWithProduction_id:weakSelf.audioModel.production_id]]];
};
[[TFViewHelper getWindowRootController] presentViewController:vc animated:YES completion:nil];
}
- (void)collectionButtonClick:(TFButton *)sender
{
if (![[TFCollectionManager shareManagerWithProductionType:TFProductionTypeAudio] isCollectedWithProductionModel:self.audioModel]) {
[[TFCollectionManager shareManagerWithProductionType:TFProductionTypeAudio] addCollectionWithProductionModel:self.audioModel];
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:TFLocalizedString(@"已加入书架")];
[self reloadCollectionButtonState];
}
[TFUtilsHelper synchronizationRackProductionWithProduction_id:self.audioModel.production_id productionType:TFProductionTypeAudio complete:nil];
}
- (void)reloadCollectionButtonState
{
if ([[TFCollectionManager shareManagerWithProductionType:TFProductionTypeAudio] isCollectedWithProductionModel:self.audioModel]) {
collectButton.buttonImageScale = 0;
collectButton.buttonTitle = TFLocalizedString(@"已收藏");
collectButton.horizontalMigration = - 3;
[collectButton selectBackgroundColor];
collectButton.tag = 2;
[collectButton mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabelFont:kFont12 labelHeight:28 labelText:collectButton.buttonTitle] + 20);
}];
} else {
collectButton.buttonImageScale = 0.4;
collectButton.buttonTitle = TFLocalizedString(@"收藏");
collectButton.horizontalMigration = 0;
[collectButton normalBackgroundColor];
collectButton.tag = 1;
[collectButton mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo([TFViewHelper getDynamicWidthWithLabelFont:kFont12 labelHeight:28 labelText:collectButton.buttonTitle] + 30);
}];
}
}
@end