完善动态页面
This commit is contained in:
@@ -18,6 +18,10 @@
|
|||||||
14EDBBBC29B6034C001D3E16 /* XPMomentListCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBBA29B6034B001D3E16 /* XPMomentListCollectionViewCell.m */; };
|
14EDBBBC29B6034C001D3E16 /* XPMomentListCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBBA29B6034B001D3E16 /* XPMomentListCollectionViewCell.m */; };
|
||||||
14EDBBBF29B60A52001D3E16 /* XPMomentTopicHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */; };
|
14EDBBBF29B60A52001D3E16 /* XPMomentTopicHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */; };
|
||||||
14EDBBC229B60FFE001D3E16 /* XPPartyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBC129B60FFE001D3E16 /* XPPartyViewController.m */; };
|
14EDBBC229B60FFE001D3E16 /* XPPartyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 14EDBBC129B60FFE001D3E16 /* XPPartyViewController.m */; };
|
||||||
|
14F9795E29B6D03B004BBFEB /* ZBCycleVerticalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F9795A29B6D03B004BBFEB /* ZBCycleVerticalView.m */; };
|
||||||
|
14F9795F29B6D03B004BBFEB /* ZBCycleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F9795D29B6D03B004BBFEB /* ZBCycleView.m */; };
|
||||||
|
14F9796229B6E1DE004BBFEB /* XPMomentTopicHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F9796129B6E1DE004BBFEB /* XPMomentTopicHeaderCell.m */; };
|
||||||
|
14F9796529B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 14F9796429B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.m */; };
|
||||||
180116F9279E8C4C00F2CBC0 /* PLTimeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */; };
|
180116F9279E8C4C00F2CBC0 /* PLTimeUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */; };
|
||||||
180116FC279E8CCE00F2CBC0 /* NVDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116FA279E8CCE00F2CBC0 /* NVDate.m */; };
|
180116FC279E8CCE00F2CBC0 /* NVDate.m in Sources */ = {isa = PBXBuildFile; fileRef = 180116FA279E8CCE00F2CBC0 /* NVDate.m */; };
|
||||||
180806D827293794001FD836 /* NSObject+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 180806D727293794001FD836 /* NSObject+MJExtension.m */; };
|
180806D827293794001FD836 /* NSObject+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 180806D727293794001FD836 /* NSObject+MJExtension.m */; };
|
||||||
@@ -1300,6 +1304,14 @@
|
|||||||
14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentTopicHeaderView.m; sourceTree = "<group>"; };
|
14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentTopicHeaderView.m; sourceTree = "<group>"; };
|
||||||
14EDBBC029B60FFE001D3E16 /* XPPartyViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPartyViewController.h; sourceTree = "<group>"; };
|
14EDBBC029B60FFE001D3E16 /* XPPartyViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPartyViewController.h; sourceTree = "<group>"; };
|
||||||
14EDBBC129B60FFE001D3E16 /* XPPartyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPartyViewController.m; sourceTree = "<group>"; };
|
14EDBBC129B60FFE001D3E16 /* XPPartyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPartyViewController.m; sourceTree = "<group>"; };
|
||||||
|
14F9795A29B6D03B004BBFEB /* ZBCycleVerticalView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZBCycleVerticalView.m; sourceTree = "<group>"; };
|
||||||
|
14F9795B29B6D03B004BBFEB /* ZBCycleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZBCycleView.h; sourceTree = "<group>"; };
|
||||||
|
14F9795C29B6D03B004BBFEB /* ZBCycleVerticalView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZBCycleVerticalView.h; sourceTree = "<group>"; };
|
||||||
|
14F9795D29B6D03B004BBFEB /* ZBCycleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZBCycleView.m; sourceTree = "<group>"; };
|
||||||
|
14F9796029B6E1DE004BBFEB /* XPMomentTopicHeaderCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMomentTopicHeaderCell.h; sourceTree = "<group>"; };
|
||||||
|
14F9796129B6E1DE004BBFEB /* XPMomentTopicHeaderCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMomentTopicHeaderCell.m; sourceTree = "<group>"; };
|
||||||
|
14F9796329B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMonentsEmptyCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
|
14F9796429B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMonentsEmptyCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
180116F7279E8C4C00F2CBC0 /* PLTimeUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLTimeUtil.h; sourceTree = "<group>"; };
|
180116F7279E8C4C00F2CBC0 /* PLTimeUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PLTimeUtil.h; sourceTree = "<group>"; };
|
||||||
180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLTimeUtil.m; sourceTree = "<group>"; };
|
180116F8279E8C4C00F2CBC0 /* PLTimeUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PLTimeUtil.m; sourceTree = "<group>"; };
|
||||||
180116FA279E8CCE00F2CBC0 /* NVDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NVDate.m; sourceTree = "<group>"; };
|
180116FA279E8CCE00F2CBC0 /* NVDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NVDate.m; sourceTree = "<group>"; };
|
||||||
@@ -3640,6 +3652,17 @@
|
|||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
|
14F9795929B6D020004BBFEB /* CycleVerticalView */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
14F9795C29B6D03B004BBFEB /* ZBCycleVerticalView.h */,
|
||||||
|
14F9795A29B6D03B004BBFEB /* ZBCycleVerticalView.m */,
|
||||||
|
14F9795B29B6D03B004BBFEB /* ZBCycleView.h */,
|
||||||
|
14F9795D29B6D03B004BBFEB /* ZBCycleView.m */,
|
||||||
|
);
|
||||||
|
path = CycleVerticalView;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
180116F6279E8C3100F2CBC0 /* Date */ = {
|
180116F6279E8C3100F2CBC0 /* Date */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -3974,6 +3997,7 @@
|
|||||||
189DD56C26DF5B5400AB55B1 /* UI */ = {
|
189DD56C26DF5B5400AB55B1 /* UI */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
14F9795929B6D020004BBFEB /* CycleVerticalView */,
|
||||||
E81E09C6290F719C00A1F410 /* Adbvertise */,
|
E81E09C6290F719C00A1F410 /* Adbvertise */,
|
||||||
E80EC74A28ACD84000D133C5 /* InputView */,
|
E80EC74A28ACD84000D133C5 /* InputView */,
|
||||||
E8998D932859DD3F00C68558 /* UIViewCorner */,
|
E8998D932859DD3F00C68558 /* UIViewCorner */,
|
||||||
@@ -6112,8 +6136,12 @@
|
|||||||
14EDBBB829B60341001D3E16 /* XPMomentListViewController.m */,
|
14EDBBB829B60341001D3E16 /* XPMomentListViewController.m */,
|
||||||
14EDBBBD29B60A52001D3E16 /* XPMomentTopicHeaderView.h */,
|
14EDBBBD29B60A52001D3E16 /* XPMomentTopicHeaderView.h */,
|
||||||
14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */,
|
14EDBBBE29B60A52001D3E16 /* XPMomentTopicHeaderView.m */,
|
||||||
|
14F9796029B6E1DE004BBFEB /* XPMomentTopicHeaderCell.h */,
|
||||||
|
14F9796129B6E1DE004BBFEB /* XPMomentTopicHeaderCell.m */,
|
||||||
14EDBBBB29B6034C001D3E16 /* XPMomentListCollectionViewCell.h */,
|
14EDBBBB29B6034C001D3E16 /* XPMomentListCollectionViewCell.h */,
|
||||||
14EDBBBA29B6034B001D3E16 /* XPMomentListCollectionViewCell.m */,
|
14EDBBBA29B6034B001D3E16 /* XPMomentListCollectionViewCell.m */,
|
||||||
|
14F9796329B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.h */,
|
||||||
|
14F9796429B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.m */,
|
||||||
);
|
);
|
||||||
path = View;
|
path = View;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -9726,6 +9754,7 @@
|
|||||||
9B1B72BC28003E06003FACE9 /* XPAnchorPKTableViewCell.m in Sources */,
|
9B1B72BC28003E06003FACE9 /* XPAnchorPKTableViewCell.m in Sources */,
|
||||||
E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */,
|
E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */,
|
||||||
E81A653C2834E9AE00F55894 /* MonentsListInfoModel.m in Sources */,
|
E81A653C2834E9AE00F55894 /* MonentsListInfoModel.m in Sources */,
|
||||||
|
14F9796229B6E1DE004BBFEB /* XPMomentTopicHeaderCell.m in Sources */,
|
||||||
E855516128059228005F293F /* XPMineGuildIncomeDetailViewController.m in Sources */,
|
E855516128059228005F293F /* XPMineGuildIncomeDetailViewController.m in Sources */,
|
||||||
9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */,
|
9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */,
|
||||||
E8A1E45B27620F4900B294CA /* XPRoomHalfWebView.m in Sources */,
|
E8A1E45B27620F4900B294CA /* XPRoomHalfWebView.m in Sources */,
|
||||||
@@ -9888,6 +9917,7 @@
|
|||||||
E816C11527608A7500C84014 /* XPRoomMiniManager.m in Sources */,
|
E816C11527608A7500C84014 /* XPRoomMiniManager.m in Sources */,
|
||||||
E8EEB91726FC7B35007C6EBA /* XPMineUserInfoDesViewController.m in Sources */,
|
E8EEB91726FC7B35007C6EBA /* XPMineUserInfoDesViewController.m in Sources */,
|
||||||
9B1B72AC280031DB003FACE9 /* XPAnchorPKViewController.m in Sources */,
|
9B1B72AC280031DB003FACE9 /* XPAnchorPKViewController.m in Sources */,
|
||||||
|
14F9795F29B6D03B004BBFEB /* ZBCycleView.m in Sources */,
|
||||||
E80CBDED27D0D899001E1EC2 /* XPHomeLikeEmptyTableViewCell.m in Sources */,
|
E80CBDED27D0D899001E1EC2 /* XPHomeLikeEmptyTableViewCell.m in Sources */,
|
||||||
9BEBBF4329384BB20024E0B4 /* HomeSearchHijackBaseModel.m in Sources */,
|
9BEBBF4329384BB20024E0B4 /* HomeSearchHijackBaseModel.m in Sources */,
|
||||||
180806FB2729A354001FD836 /* ThemeColor+Room.m in Sources */,
|
180806FB2729A354001FD836 /* ThemeColor+Room.m in Sources */,
|
||||||
@@ -10076,6 +10106,7 @@
|
|||||||
E86596542701A55500846EBD /* StatisticsServiceHelper.m in Sources */,
|
E86596542701A55500846EBD /* StatisticsServiceHelper.m in Sources */,
|
||||||
E8E21A9B28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m in Sources */,
|
E8E21A9B28B4BD92008F7C9D /* XPRoomGraffitiGiftAnimationView.m in Sources */,
|
||||||
E8E70D8C26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m in Sources */,
|
E8E70D8C26F2F5A500F03460 /* XPMineHeadItemCollectionViewCell.m in Sources */,
|
||||||
|
14F9796529B71189004BBFEB /* XPMonentsEmptyCollectionViewCell.m in Sources */,
|
||||||
E883E82E28153BDF0000005D /* XPGuildAnchorIncomeSectionView.m in Sources */,
|
E883E82E28153BDF0000005D /* XPGuildAnchorIncomeSectionView.m in Sources */,
|
||||||
9B17F71827BD150600440843 /* SVGAParserManager.m in Sources */,
|
9B17F71827BD150600440843 /* SVGAParserManager.m in Sources */,
|
||||||
E8751E5928A62A390056EF44 /* Api+Sailing.m in Sources */,
|
E8751E5928A62A390056EF44 /* Api+Sailing.m in Sources */,
|
||||||
@@ -10179,6 +10210,7 @@
|
|||||||
E81AF32527F1D5B8003B9E43 /* XPRoomPKProgressView.m in Sources */,
|
E81AF32527F1D5B8003B9E43 /* XPRoomPKProgressView.m in Sources */,
|
||||||
E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */,
|
E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */,
|
||||||
9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */,
|
9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */,
|
||||||
|
14F9795E29B6D03B004BBFEB /* ZBCycleVerticalView.m in Sources */,
|
||||||
E8E859D628264C2300EE4857 /* DispatchQueueLogFormatter.m in Sources */,
|
E8E859D628264C2300EE4857 /* DispatchQueueLogFormatter.m in Sources */,
|
||||||
E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */,
|
E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */,
|
||||||
E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */,
|
E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */,
|
||||||
|
33
xplan-ios/Base/UI/CycleVerticalView/ZBCycleVerticalView.h
Normal file
33
xplan-ios/Base/UI/CycleVerticalView/ZBCycleVerticalView.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
//
|
||||||
|
// ZBCycleVerticalView.h
|
||||||
|
// DeRong
|
||||||
|
//
|
||||||
|
// Created by 周博 on 2019/1/7.
|
||||||
|
// Copyright © 2019 周博. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
typedef NS_ENUM(NSInteger, ZBCycleVerticalViewScrollDirection) {
|
||||||
|
ZBCycleVerticalViewScrollDirectionUp = 0,
|
||||||
|
ZBCycleVerticalViewScrollDirectionDown
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef void(^ClickBlock)(NSInteger index);
|
||||||
|
|
||||||
|
@interface ZBCycleVerticalView : UIView
|
||||||
|
|
||||||
|
@property (assign, nonatomic) ZBCycleVerticalViewScrollDirection direction;
|
||||||
|
@property (strong, nonatomic) NSArray *dataArray; // 数据源
|
||||||
|
@property (copy, nonatomic) ClickBlock block;
|
||||||
|
|
||||||
|
// 开启动画(默认是开启的)
|
||||||
|
- (void)startAnimation;
|
||||||
|
|
||||||
|
// 关闭动画
|
||||||
|
- (void)stopAnimation;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
179
xplan-ios/Base/UI/CycleVerticalView/ZBCycleVerticalView.m
Normal file
179
xplan-ios/Base/UI/CycleVerticalView/ZBCycleVerticalView.m
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
//
|
||||||
|
// ZBCycleVerticalView.m
|
||||||
|
// DeRong
|
||||||
|
//
|
||||||
|
// Created by 周博 on 2019/1/7.
|
||||||
|
// Copyright © 2019 周博. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "ZBCycleVerticalView.h"
|
||||||
|
#import "ZBCycleView.h"
|
||||||
|
|
||||||
|
@interface ZBCycleVerticalView ()
|
||||||
|
{
|
||||||
|
CGRect _topRect; //上View
|
||||||
|
CGRect _middleRect;//中View
|
||||||
|
CGRect _btmRect; //下View
|
||||||
|
|
||||||
|
double _showTime; //timer循环时长
|
||||||
|
double _animationTime;//动画时长
|
||||||
|
|
||||||
|
UIButton *_button; //按钮
|
||||||
|
NSTimer *_timer; //计时器
|
||||||
|
NSInteger _indexNow; //计数器
|
||||||
|
}
|
||||||
|
|
||||||
|
@property (strong, nonatomic) ZBCycleView *view1;
|
||||||
|
@property (strong, nonatomic) ZBCycleView *view2;
|
||||||
|
|
||||||
|
@property (strong, nonatomic) ZBCycleView *tmpTopView;
|
||||||
|
@property (strong, nonatomic) ZBCycleView *tmpMiddleView;
|
||||||
|
@property (strong, nonatomic) ZBCycleView *tmpBtmView;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation ZBCycleVerticalView
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame{
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self) {
|
||||||
|
_showTime = 3;
|
||||||
|
_animationTime = 0.3;
|
||||||
|
[self initUI];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
|
||||||
|
self = [super initWithCoder:aDecoder];
|
||||||
|
if (self) {
|
||||||
|
_showTime = 3;
|
||||||
|
_animationTime = 0.3;
|
||||||
|
[self initUI];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)layoutSubviews{
|
||||||
|
[super layoutSubviews];
|
||||||
|
|
||||||
|
_middleRect = self.bounds;
|
||||||
|
_topRect = CGRectMake(0, -CGRectGetHeight(self.frame), CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));
|
||||||
|
_btmRect = CGRectMake(0, CGRectGetHeight(self.frame), CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));
|
||||||
|
|
||||||
|
self.view1.frame = _middleRect;
|
||||||
|
self.view2.frame = self.direction == ZBCycleVerticalViewScrollDirectionDown ? self->_topRect : self->_btmRect;
|
||||||
|
_button.frame = _middleRect;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initUI{
|
||||||
|
self.view1 = [[ZBCycleView alloc]init];
|
||||||
|
// self.view1.backgroundColor = [UIColor clearColor];
|
||||||
|
|
||||||
|
self.view2 = [[ZBCycleView alloc]init];
|
||||||
|
// self.view2.backgroundColor = [UIColor clearColor];
|
||||||
|
|
||||||
|
[self addSubview:self.view1];
|
||||||
|
[self addSubview:self.view2];
|
||||||
|
|
||||||
|
_button = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
|
_button.backgroundColor = [UIColor clearColor];
|
||||||
|
[_button addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
[self addSubview:_button];
|
||||||
|
|
||||||
|
self.clipsToBounds = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行动画
|
||||||
|
- (void)executeAnimation{
|
||||||
|
[self setViewInfo];
|
||||||
|
[UIView animateWithDuration:_animationTime delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
|
||||||
|
self.tmpMiddleView.frame = self.direction == ZBCycleVerticalViewScrollDirectionDown ? self->_btmRect : self->_topRect;
|
||||||
|
if (self->_direction == ZBCycleVerticalViewScrollDirectionDown) {
|
||||||
|
self.tmpTopView.frame = self->_middleRect;
|
||||||
|
} else {
|
||||||
|
self.tmpBtmView.frame = self->_middleRect;
|
||||||
|
}
|
||||||
|
}completion:^(BOOL finished) {
|
||||||
|
self.tmpMiddleView.frame = self->_direction == ZBCycleVerticalViewScrollDirectionDown ? self->_topRect : self->_btmRect;
|
||||||
|
if (self->_indexNow < self.dataArray.count - 1) {
|
||||||
|
self->_indexNow ++;
|
||||||
|
}else{
|
||||||
|
self->_indexNow = 0;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - set
|
||||||
|
- (void)setDirection:(ZBCycleVerticalViewScrollDirection)direction{
|
||||||
|
_direction = direction;
|
||||||
|
self.view2.frame = _direction == ZBCycleVerticalViewScrollDirectionDown ? _topRect : _btmRect;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setDataArray:(NSArray *)dataArray{
|
||||||
|
_dataArray = dataArray;
|
||||||
|
if (![_timer isValid]) {
|
||||||
|
_indexNow = 0;
|
||||||
|
[self startAnimation];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setViewInfo{
|
||||||
|
if (_direction == ZBCycleVerticalViewScrollDirectionDown) {
|
||||||
|
if (self.view1.frame.origin.y == 0) {
|
||||||
|
_tmpMiddleView = self.view1;
|
||||||
|
_tmpTopView = self.view2;
|
||||||
|
} else {
|
||||||
|
_tmpMiddleView = self.view2;
|
||||||
|
_tmpTopView = self.view1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (self.view1.frame.origin.y == 0) {
|
||||||
|
_tmpMiddleView = self.view1;
|
||||||
|
_tmpBtmView = self.view2;
|
||||||
|
} else {
|
||||||
|
_tmpMiddleView = self.view2;
|
||||||
|
_tmpBtmView = self.view1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_tmpMiddleView.dicData = _dataArray[_indexNow%(_dataArray.count)];
|
||||||
|
if(_dataArray.count > 1){
|
||||||
|
if (_direction == ZBCycleVerticalViewScrollDirectionDown) {
|
||||||
|
_tmpTopView.dicData = _dataArray[(_indexNow+1)%(_dataArray.count)];
|
||||||
|
} else {
|
||||||
|
_tmpBtmView.dicData = _dataArray[(_indexNow+1)%(_dataArray.count)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)startAnimation{
|
||||||
|
[self setViewInfo];
|
||||||
|
if (_dataArray.count > 1) {
|
||||||
|
[self stopTimer];
|
||||||
|
_timer = [NSTimer scheduledTimerWithTimeInterval:_showTime target:self selector:@selector(executeAnimation) userInfo:nil repeats:YES];
|
||||||
|
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:UITrackingRunLoopMode];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)stopAnimation{
|
||||||
|
[self stopTimer];
|
||||||
|
[self.layer removeAllAnimations];
|
||||||
|
[NSObject cancelPreviousPerformRequestsWithTarget:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark -
|
||||||
|
- (void)stopTimer{
|
||||||
|
if(_timer){
|
||||||
|
if([_timer isValid]){
|
||||||
|
[_timer invalidate];
|
||||||
|
}
|
||||||
|
_timer = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)btnClick{
|
||||||
|
if (self.block) {
|
||||||
|
self.block(_indexNow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
19
xplan-ios/Base/UI/CycleVerticalView/ZBCycleView.h
Normal file
19
xplan-ios/Base/UI/CycleVerticalView/ZBCycleView.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
//
|
||||||
|
// ZBCycleView.h
|
||||||
|
// CycleVerticalView
|
||||||
|
//
|
||||||
|
// Created by 周博 on 2019/1/8.
|
||||||
|
// Copyright © 2019 EL. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface ZBCycleView : UIView
|
||||||
|
|
||||||
|
@property (strong, nonatomic) NSDictionary *dicData;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
39
xplan-ios/Base/UI/CycleVerticalView/ZBCycleView.m
Normal file
39
xplan-ios/Base/UI/CycleVerticalView/ZBCycleView.m
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
//
|
||||||
|
// ZBCycleView.m
|
||||||
|
// CycleVerticalView
|
||||||
|
//
|
||||||
|
// Created by 周博 on 2019/1/8.
|
||||||
|
// Copyright © 2019 EL. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "ZBCycleView.h"
|
||||||
|
@interface ZBCycleView ()
|
||||||
|
|
||||||
|
@property (strong, nonatomic) UILabel *titleLabel;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation ZBCycleView
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame{
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self) {
|
||||||
|
_titleLabel = [[UILabel alloc] init];
|
||||||
|
_titleLabel.font = [UIFont systemFontOfSize:15];
|
||||||
|
_titleLabel.textColor = [UIColor blackColor];
|
||||||
|
[self addSubview:_titleLabel];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)layoutSubviews{
|
||||||
|
[super layoutSubviews];
|
||||||
|
_titleLabel.frame = CGRectMake(15, 0, CGRectGetWidth(self.frame)-30, CGRectGetHeight(self.frame));
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setDicData:(NSDictionary *)dicData{
|
||||||
|
_dicData = dicData;
|
||||||
|
_titleLabel.text = dicData[@"TITLE"];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@@ -8,6 +8,7 @@
|
|||||||
#import "XPNewHomeHeaderView.h"
|
#import "XPNewHomeHeaderView.h"
|
||||||
///Third
|
///Third
|
||||||
#import <Masonry.h>
|
#import <Masonry.h>
|
||||||
|
#import "ZBCycleVerticalView.h"
|
||||||
///Tool
|
///Tool
|
||||||
#import "XPMacro.h"
|
#import "XPMacro.h"
|
||||||
#import "ThemeColor.h"
|
#import "ThemeColor.h"
|
||||||
@@ -26,7 +27,7 @@
|
|||||||
/// 热门
|
/// 热门
|
||||||
@property (nonatomic, strong) UIImageView *hotView;
|
@property (nonatomic, strong) UIImageView *hotView;
|
||||||
@property (nonatomic, strong) UILabel *hotTextLabel;
|
@property (nonatomic, strong) UILabel *hotTextLabel;
|
||||||
@property (nonatomic, strong) UIView *messageView;
|
@property (nonatomic, strong) ZBCycleVerticalView *messageView;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
if (self) {
|
if (self) {
|
||||||
[self initSubViews];
|
[self initSubViews];
|
||||||
[self initSubViewConstraints];
|
[self initSubViewConstraints];
|
||||||
|
[self setMessageScroll];
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@@ -151,6 +153,26 @@
|
|||||||
|
|
||||||
#pragma mark - Getters And Setters
|
#pragma mark - Getters And Setters
|
||||||
|
|
||||||
|
- (void)setMessageScroll {
|
||||||
|
// 模拟数据
|
||||||
|
NSArray *array = @[
|
||||||
|
@{
|
||||||
|
@"TITLE" : @"1华为:冀今年香港手机市场占有率提高至24% 7月开首间旗舰店",
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
@"TITLE" : @"2北京大兴国际机场迎来第一架飞机",
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
@"TITLE" : @"3春运首日 零陵汽车站客运平稳有序",
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
@"TITLE" : @"4吴秀波出轨风波后,和白百何主演的《情圣2》突然提档",
|
||||||
|
}
|
||||||
|
];
|
||||||
|
self.messageView.dataArray = array;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
- (UIButton *)partyView {
|
- (UIButton *)partyView {
|
||||||
if (!_partyView) {
|
if (!_partyView) {
|
||||||
_partyView = [UIButton buttonWithType:UIButtonTypeCustom];
|
_partyView = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
@@ -207,9 +229,10 @@
|
|||||||
return _hotTextLabel;
|
return _hotTextLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (UIView *)messageView {
|
- (ZBCycleVerticalView *)messageView {
|
||||||
if (!_messageView) {
|
if (!_messageView) {
|
||||||
_messageView = [[UIView alloc] init];
|
_messageView = [[ZBCycleVerticalView alloc] init];
|
||||||
|
_messageView.direction = ZBCycleVerticalViewScrollDirectionUp;
|
||||||
}
|
}
|
||||||
return _messageView;
|
return _messageView;
|
||||||
}
|
}
|
||||||
|
@@ -182,7 +182,7 @@
|
|||||||
|
|
||||||
[self.topGradientImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.topGradientImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.top.right.mas_equalTo(0);
|
make.left.top.right.mas_equalTo(0);
|
||||||
make.top.mas_equalTo(125);
|
make.height.mas_equalTo(125);
|
||||||
}];
|
}];
|
||||||
[self.homeNavView mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.homeNavView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.left.top.right.mas_equalTo(0);
|
make.left.top.right.mas_equalTo(0);
|
||||||
|
@@ -10,7 +10,18 @@
|
|||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
typedef NS_ENUM(NSUInteger, XPMomentListType) {
|
||||||
|
/// 推荐
|
||||||
|
XPMomentListRecommend,
|
||||||
|
/// 最新
|
||||||
|
XPMomentListTypeLatest,
|
||||||
|
/// 关注
|
||||||
|
XPMomentListTypeAttent,
|
||||||
|
};
|
||||||
|
|
||||||
@interface XPMomentListViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
@interface XPMomentListViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
||||||
|
/// 列表类型
|
||||||
|
@property (nonatomic, assign) XPMomentListType listType;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@@ -12,19 +12,23 @@
|
|||||||
#import "ThemeColor.h"
|
#import "ThemeColor.h"
|
||||||
#import "NSArray+Safe.h"
|
#import "NSArray+Safe.h"
|
||||||
#import "ClientConfig.h"
|
#import "ClientConfig.h"
|
||||||
|
/// Model
|
||||||
#import "MonentsListInfoModel.h"
|
#import "MonentsListInfoModel.h"
|
||||||
|
/// View
|
||||||
#import "XPMomentListCollectionViewCell.h"
|
#import "XPMomentListCollectionViewCell.h"
|
||||||
#import "XPButton.h"
|
#import "XPMonentsEmptyCollectionViewCell.h"
|
||||||
|
/// P
|
||||||
#import "XPMonentsLatestPresenter.h"
|
#import "XPMonentsLatestPresenter.h"
|
||||||
#import "XPMonentsLatestProtocol.h"
|
#import "XPMonentsLatestProtocol.h"
|
||||||
|
#import "XPMonentsRecommendPresenter.h"
|
||||||
|
#import "XPMonentsRecommendProtocol.h"
|
||||||
|
#import "XPMonentsAttentionPresenter.h"
|
||||||
|
#import "XPMonentsAttentionProtocol.h"
|
||||||
|
/// VC
|
||||||
#import "XPMonentsDetailViewController.h"
|
#import "XPMonentsDetailViewController.h"
|
||||||
#import "XPMonentsPublishViewController.h"
|
#import "XPMonentsPublishViewController.h"
|
||||||
|
|
||||||
@interface XPMomentListViewController ()<UICollectionViewDelegate, UICollectionViewDataSource, XPMonentsLatestProtocol, XPMonentsDetailViewControllerDelegate>
|
@interface XPMomentListViewController ()<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, XPMonentsLatestProtocol, XPMonentsRecommendProtocol, XPMonentsAttentionProtocol, XPMonentsDetailViewControllerDelegate>
|
||||||
|
|
||||||
@property (nonatomic, strong) UICollectionView *collectionView;
|
@property (nonatomic, strong) UICollectionView *collectionView;
|
||||||
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
|
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
|
||||||
@@ -47,7 +51,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (__kindof id)createPresenter {
|
- (__kindof id)createPresenter {
|
||||||
return [[XPMonentsLatestPresenter alloc] init];
|
if (self.listType == XPMomentListRecommend) {
|
||||||
|
return [[XPMonentsRecommendPresenter alloc] init];
|
||||||
|
}else if (self.listType == XPMomentListTypeLatest) {
|
||||||
|
return [[XPMonentsLatestPresenter alloc] init];
|
||||||
|
}else{
|
||||||
|
return [[XPMonentsAttentionPresenter alloc] init];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
@@ -89,7 +99,14 @@
|
|||||||
#pragma mark - 刷新的fangfa
|
#pragma mark - 刷新的fangfa
|
||||||
- (void)headerRefresh {
|
- (void)headerRefresh {
|
||||||
self.page = 1;
|
self.page = 1;
|
||||||
[self.presenter getMonentsLatestListPageSize:20 dynamicId:@"" state:0];
|
if (self.listType == XPMomentListRecommend) {
|
||||||
|
[self.presenter getMonentsRecommendList:self.page pageSize:20 state:0];
|
||||||
|
}else if (self.listType == XPMomentListTypeLatest) {
|
||||||
|
[self.presenter getMonentsLatestListPageSize:20 dynamicId:@"" state:0];
|
||||||
|
}else{
|
||||||
|
[self.presenter getMonentsAttentionListPageSize:20 dynamicId:@"" state:0];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)footerRefresh {
|
- (void)footerRefresh {
|
||||||
@@ -99,7 +116,14 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self.page++;
|
self.page++;
|
||||||
[self.presenter getMonentsLatestListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1];
|
|
||||||
|
if (self.listType == XPMomentListRecommend) {
|
||||||
|
[self.presenter getMonentsRecommendList:self.page pageSize:20 state:1];
|
||||||
|
}else if (self.listType == XPMomentListTypeLatest) {
|
||||||
|
[self.presenter getMonentsLatestListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1];
|
||||||
|
}else{
|
||||||
|
[self.presenter getMonentsAttentionListPageSize:20 dynamicId:self.listInfo.nextDynamicId state:1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - XPMonentsLatestProtocol
|
#pragma mark - XPMonentsLatestProtocol
|
||||||
@@ -134,6 +158,69 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - XPMonentsRecommendProtocol
|
||||||
|
- (void)getMonentsRecommendListSuccess:(NSArray *)array state:(int)state {
|
||||||
|
if (state == 0) {
|
||||||
|
[self.datasource removeAllObjects];
|
||||||
|
}
|
||||||
|
if (array.count > 0) {
|
||||||
|
[self.datasource addObjectsFromArray:array];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == 0) {
|
||||||
|
self.hasNoMoreData = NO;
|
||||||
|
[self.collectionView.mj_header endRefreshing];
|
||||||
|
} else {
|
||||||
|
if (array.count > 0) {
|
||||||
|
self.hasNoMoreData = NO;
|
||||||
|
} else {
|
||||||
|
self.hasNoMoreData = YES;
|
||||||
|
}
|
||||||
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
|
}
|
||||||
|
[self.collectionView reloadData];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)getMonentsRecommendListFail:(NSString *)msg state:(int)state {
|
||||||
|
if (state == 0) {
|
||||||
|
[self.collectionView.mj_header endRefreshing];
|
||||||
|
} else {
|
||||||
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - XPMonentsRecommendProtocol
|
||||||
|
- (void)getMonentsAttentionListSuccess:(MonentsListInfoModel *)listInfo state:(int)state {
|
||||||
|
self.listInfo = listInfo;
|
||||||
|
if (state == 0) {
|
||||||
|
[self.datasource removeAllObjects];
|
||||||
|
}
|
||||||
|
if (listInfo.dynamicList.count > 0) {
|
||||||
|
[self.datasource addObjectsFromArray:listInfo.dynamicList];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == 0) {
|
||||||
|
self.hasNoMoreData = NO;
|
||||||
|
[self.collectionView.mj_header endRefreshing];
|
||||||
|
} else {
|
||||||
|
if (listInfo.dynamicList.count > 0) {
|
||||||
|
self.hasNoMoreData = NO;
|
||||||
|
} else {
|
||||||
|
self.hasNoMoreData = YES;
|
||||||
|
}
|
||||||
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
|
}
|
||||||
|
[self.collectionView reloadData];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)getMonentsAttentionListFail:(NSString *)msg state:(int)state {
|
||||||
|
if (state == 0) {
|
||||||
|
[self.collectionView.mj_header endRefreshing];
|
||||||
|
} else {
|
||||||
|
[self.collectionView.mj_footer endRefreshing];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - XPMonentsDetailViewControllerDelegate
|
#pragma mark - XPMonentsDetailViewControllerDelegate
|
||||||
- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId {
|
- (void)xPMonentsDetailViewController:(XPMonentsDetailViewController *)view deleteMonents:(NSString *)dynamicId {
|
||||||
__block MonentsInfoModel * deleteInfo;
|
__block MonentsInfoModel * deleteInfo;
|
||||||
@@ -152,13 +239,36 @@
|
|||||||
#pragma mark - UICollectionView
|
#pragma mark - UICollectionView
|
||||||
|
|
||||||
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
||||||
return self.datasource.count;
|
if (self.datasource.count > 0) {
|
||||||
|
return self.datasource.count;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
|
if (self.datasource.count > 0) {
|
||||||
|
CGFloat width = (KScreenWidth - 16 -13 -16)/2.0;
|
||||||
|
CGFloat height = 220.0/165.0*width;
|
||||||
|
return CGSizeMake(width, height);
|
||||||
|
}
|
||||||
|
return collectionView.frame.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
|
||||||
|
if (self.datasource.count > 0) {
|
||||||
|
return UIEdgeInsetsMake(12, 16, 12, 16);
|
||||||
|
}
|
||||||
|
return UIEdgeInsetsZero;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
XPMomentListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self) forIndexPath:indexPath];
|
if (self.datasource.count > 0) {
|
||||||
MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row];
|
XPMomentListCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self) forIndexPath:indexPath];
|
||||||
cell.monentsInfo = monentsInfo;
|
MonentsInfoModel * monentsInfo = [self.datasource safeObjectAtIndex1:indexPath.row];
|
||||||
|
cell.monentsInfo = monentsInfo;
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
XPMonentsEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMonentsEmptyCollectionViewCell class]) forIndexPath:indexPath];
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,17 +306,14 @@
|
|||||||
if (!_collectionView) {
|
if (!_collectionView) {
|
||||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||||
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
|
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
|
||||||
CGFloat width = (KScreenWidth - 16 -13 -16)/2.0;
|
|
||||||
CGFloat height = 220.0/165.0*width;
|
|
||||||
layout.itemSize = CGSizeMake(width, height);
|
|
||||||
layout.minimumLineSpacing = 12.0;
|
layout.minimumLineSpacing = 12.0;
|
||||||
layout.minimumInteritemSpacing = 13.0;
|
layout.minimumInteritemSpacing = 13.0;
|
||||||
layout.sectionInset = UIEdgeInsetsMake(12, 16, 12, 16);
|
|
||||||
|
|
||||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||||
_collectionView.backgroundColor = UIColor.clearColor;
|
_collectionView.backgroundColor = UIColor.clearColor;
|
||||||
_collectionView.alwaysBounceVertical = YES;
|
_collectionView.alwaysBounceVertical = YES;
|
||||||
[_collectionView registerClass:[XPMomentListCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self)];
|
[_collectionView registerClass:[XPMomentListCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass(XPMomentListCollectionViewCell.self)];
|
||||||
|
[_collectionView registerClass:[XPMonentsEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMonentsEmptyCollectionViewCell class])];
|
||||||
_collectionView.delegate = self;
|
_collectionView.delegate = self;
|
||||||
_collectionView.dataSource = self;
|
_collectionView.dataSource = self;
|
||||||
_collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
_collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
||||||
|
20
xplan-ios/Main/Monents/View/XPMomentTopicHeaderCell.h
Normal file
20
xplan-ios/Main/Monents/View/XPMomentTopicHeaderCell.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
//
|
||||||
|
// XPMomentTopicHeaderCell.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by XY on 2023/3/7.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
@class MonentsTopicModel;
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface XPMomentTopicHeaderCell : UICollectionViewCell
|
||||||
|
|
||||||
|
@property (nonatomic, strong) MonentsTopicModel *topicModel;
|
||||||
|
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
80
xplan-ios/Main/Monents/View/XPMomentTopicHeaderCell.m
Normal file
80
xplan-ios/Main/Monents/View/XPMomentTopicHeaderCell.m
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
//
|
||||||
|
// XPMomentTopicHeaderCell.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by XY on 2023/3/7.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "XPMomentTopicHeaderCell.h"
|
||||||
|
///Third
|
||||||
|
#import <Masonry.h>
|
||||||
|
///Tool
|
||||||
|
#import "NetImageView.h"
|
||||||
|
///Model
|
||||||
|
#import "MonentsTopicModel.h"
|
||||||
|
|
||||||
|
@interface XPMomentTopicHeaderCell()
|
||||||
|
/// 背景图
|
||||||
|
@property (nonatomic, strong) NetImageView *bgImageView;
|
||||||
|
/// 话题
|
||||||
|
@property (nonatomic, strong) UILabel *topicLabel;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation XPMomentTopicHeaderCell
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame {
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self) {
|
||||||
|
[self initSubViews];
|
||||||
|
[self initSubViewConstraints];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Private Method
|
||||||
|
- (void)initSubViews {
|
||||||
|
[self addSubview:self.bgImageView];
|
||||||
|
[self addSubview:self.topicLabel];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initSubViewConstraints {
|
||||||
|
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.edges.mas_equalTo(self.contentView);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.topicLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerX.mas_equalTo(0);
|
||||||
|
make.centerY.mas_equalTo(0);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Getters And Setters
|
||||||
|
|
||||||
|
- (void)setTopicModel:(MonentsTopicModel *)topicModel {
|
||||||
|
_topicModel = topicModel;
|
||||||
|
if (_topicLabel) {
|
||||||
|
self.bgImageView.imageUrl = _topicModel.icon;
|
||||||
|
self.topicLabel.text = [NSString stringWithFormat:@"#%@",_topicModel.name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NetImageView *)bgImageView {
|
||||||
|
if (!_bgImageView) {
|
||||||
|
_bgImageView = [[NetImageView alloc] init];
|
||||||
|
_bgImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
_bgImageView.clipsToBounds = YES;
|
||||||
|
}
|
||||||
|
return _bgImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)topicLabel {
|
||||||
|
if (!_topicLabel) {
|
||||||
|
_topicLabel = [[UILabel alloc] init];
|
||||||
|
_topicLabel.textColor = UIColor.whiteColor;
|
||||||
|
_topicLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold];
|
||||||
|
}
|
||||||
|
return _topicLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@@ -6,10 +6,23 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
#import "MonentsTopicModel.h"
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@protocol XPMomentTopicHeaderViewDelegate <NSObject>
|
||||||
|
/// 点击了主题
|
||||||
|
- (void)momentTopicHeaderViewClickTopic:(MonentsTopicModel *)topicModel;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
@interface XPMomentTopicHeaderView : UIView
|
@interface XPMomentTopicHeaderView : UIView
|
||||||
|
/// 主题列表
|
||||||
|
@property (nonatomic, strong) NSArray *topicList;
|
||||||
|
|
||||||
|
@property (nonatomic, weak) id<XPMomentTopicHeaderViewDelegate> delegate;
|
||||||
|
/// 获取头部高度
|
||||||
|
+ (CGFloat)getTopicHeaderViewHeight;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@@ -8,10 +8,16 @@
|
|||||||
#import "XPMomentTopicHeaderView.h"
|
#import "XPMomentTopicHeaderView.h"
|
||||||
#import "ThemeColor.h"
|
#import "ThemeColor.h"
|
||||||
#import <Masonry.h>
|
#import <Masonry.h>
|
||||||
|
#import "XPMacro.h"
|
||||||
|
#import "NSArray+Safe.h"
|
||||||
|
///View
|
||||||
|
#import "XPMomentTopicHeaderCell.h"
|
||||||
|
|
||||||
@interface XPMomentTopicHeaderView()
|
@interface XPMomentTopicHeaderView()<UICollectionViewDelegate, UICollectionViewDataSource>
|
||||||
|
/// 背景
|
||||||
@property (nonatomic, strong) UIView *contentView;
|
@property (nonatomic, strong) UIView *bgView;
|
||||||
|
/// 列表
|
||||||
|
@property (nonatomic, strong) UICollectionView *collectionView;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@@ -28,28 +34,84 @@
|
|||||||
|
|
||||||
#pragma mark - Private Method
|
#pragma mark - Private Method
|
||||||
- (void)initSubViews {
|
- (void)initSubViews {
|
||||||
[self addSubview:self.contentView];
|
[self addSubview:self.bgView];
|
||||||
|
[self.bgView addSubview:self.collectionView];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)initSubViewConstraints {
|
- (void)initSubViewConstraints {
|
||||||
[self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.top.mas_equalTo(10);
|
make.top.mas_equalTo(10);
|
||||||
make.left.mas_equalTo(15);
|
make.left.mas_equalTo(15);
|
||||||
make.right.mas_equalTo(-15);
|
make.right.mas_equalTo(-15);
|
||||||
make.bottom.mas_equalTo(-10);
|
make.bottom.mas_equalTo(-10);
|
||||||
}];
|
}];
|
||||||
|
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.left.right.bottom.mas_equalTo(0);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (CGFloat)getTopicHeaderViewHeight {
|
||||||
|
CGFloat width = KScreenWidth-15*2;
|
||||||
|
CGFloat height = 74.0/345.0*width;
|
||||||
|
return height+20;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - UICollectionViewDelegate
|
||||||
|
|
||||||
|
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
||||||
|
return self.topicList.count;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
|
XPMomentTopicHeaderCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMomentTopicHeaderCell class]) forIndexPath:indexPath];
|
||||||
|
MonentsTopicModel *model = [self.topicList safeObjectAtIndex1:indexPath.row];
|
||||||
|
cell.topicModel = model;
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
|
if (self.delegate && [self.delegate respondsToSelector:@selector(momentTopicHeaderViewClickTopic:)]) {
|
||||||
|
MonentsTopicModel *topicModel = [self.topicList safeObjectAtIndex1:indexPath.row];
|
||||||
|
[self.delegate momentTopicHeaderViewClickTopic:topicModel];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Getters And Setters
|
#pragma mark - Getters And Setters
|
||||||
|
|
||||||
- (UIView *)contentView {
|
- (void)setTopicList:(NSArray *)topicList {
|
||||||
if (!_contentView) {
|
_topicList = topicList;
|
||||||
_contentView = [[UIView alloc] init];
|
[self.collectionView reloadData];
|
||||||
_contentView.backgroundColor = [ThemeColor appCellBackgroundColor];
|
}
|
||||||
_contentView.layer.cornerRadius = 12;
|
|
||||||
_contentView.clipsToBounds = YES;
|
- (UIView *)bgView {
|
||||||
|
if (!_bgView) {
|
||||||
|
_bgView = [[UIView alloc] init];
|
||||||
|
_bgView.backgroundColor = [ThemeColor appCellBackgroundColor];
|
||||||
|
_bgView.layer.cornerRadius = 12;
|
||||||
|
_bgView.clipsToBounds = YES;
|
||||||
}
|
}
|
||||||
return _contentView;
|
return _bgView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UICollectionView *)collectionView {
|
||||||
|
if (!_collectionView) {
|
||||||
|
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||||
|
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
|
||||||
|
CGFloat width = KScreenWidth-15*2;
|
||||||
|
CGFloat height = 74.0/345.0*width;
|
||||||
|
layout.itemSize = CGSizeMake(width, height);
|
||||||
|
layout.minimumLineSpacing = 0;
|
||||||
|
layout.minimumInteritemSpacing = 0;
|
||||||
|
|
||||||
|
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||||
|
_collectionView.delegate = self;
|
||||||
|
_collectionView.dataSource = self;
|
||||||
|
_collectionView.pagingEnabled = YES;
|
||||||
|
_collectionView.showsVerticalScrollIndicator = NO;
|
||||||
|
_collectionView.showsHorizontalScrollIndicator = NO;
|
||||||
|
[_collectionView registerClass:[XPMomentTopicHeaderCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMomentTopicHeaderCell class])];
|
||||||
|
}
|
||||||
|
return _collectionView;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@@ -0,0 +1,16 @@
|
|||||||
|
//
|
||||||
|
// XPMonentsEmptyCollectionViewCell.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by XY on 2023/3/7.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface XPMonentsEmptyCollectionViewCell : UICollectionViewCell
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,75 @@
|
|||||||
|
//
|
||||||
|
// XPMonentsEmptyCollectionViewCell.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by XY on 2023/3/7.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "XPMonentsEmptyCollectionViewCell.h"
|
||||||
|
///Third
|
||||||
|
#import <Masonry/Masonry.h>
|
||||||
|
///Tool
|
||||||
|
#import "ThemeColor.h"
|
||||||
|
#import "UIImageConstant.h"
|
||||||
|
|
||||||
|
@interface XPMonentsEmptyCollectionViewCell()
|
||||||
|
|
||||||
|
@property (nonatomic,strong) UIImageView *emptyImageView;
|
||||||
|
@property (nonatomic,strong) UILabel *titleLabel;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation XPMonentsEmptyCollectionViewCell
|
||||||
|
|
||||||
|
- (instancetype)initWithFrame:(CGRect)frame {
|
||||||
|
self = [super initWithFrame:frame];
|
||||||
|
if (self) {
|
||||||
|
[self initSubViews];
|
||||||
|
[self initSubViewConstraints];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Private Method
|
||||||
|
- (void)initSubViews {
|
||||||
|
self.backgroundColor = [UIColor clearColor];
|
||||||
|
[self.contentView addSubview:self.emptyImageView];
|
||||||
|
[self.contentView addSubview:self.titleLabel];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initSubViewConstraints {
|
||||||
|
[self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.mas_equalTo(self.contentView).offset(150);
|
||||||
|
make.centerX.mas_equalTo(self.contentView);
|
||||||
|
make.size.mas_equalTo(CGSizeMake(200, 200));
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20);
|
||||||
|
make.left.right.mas_equalTo(self.contentView);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
#pragma mark - Getters And Setters
|
||||||
|
- (UIImageView *)emptyImageView {
|
||||||
|
if (!_emptyImageView) {
|
||||||
|
_emptyImageView = [[UIImageView alloc] init];
|
||||||
|
_emptyImageView.userInteractionEnabled = YES;
|
||||||
|
_emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder];
|
||||||
|
_emptyImageView.layer.masksToBounds = YES;
|
||||||
|
_emptyImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
}
|
||||||
|
return _emptyImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)titleLabel {
|
||||||
|
if (!_titleLabel) {
|
||||||
|
_titleLabel = [[UILabel alloc] init];
|
||||||
|
_titleLabel.text = @"暂无数据";
|
||||||
|
_titleLabel.font = [UIFont systemFontOfSize:16];
|
||||||
|
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
_titleLabel.textColor = [ThemeColor secondTextColor];
|
||||||
|
}
|
||||||
|
return _titleLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@@ -18,8 +18,12 @@
|
|||||||
/// VC
|
/// VC
|
||||||
#import "XPMomentListViewController.h"
|
#import "XPMomentListViewController.h"
|
||||||
#import "XPMonentsPublishViewController.h"
|
#import "XPMonentsPublishViewController.h"
|
||||||
|
#import "XPMonentTopicContainerViewController.h"
|
||||||
|
///P
|
||||||
|
#import "XPMonentsRecommendPresenter.h"
|
||||||
|
#import "XPMonentsRecommendProtocol.h"
|
||||||
|
|
||||||
@interface XPNewMomentsViewController ()<JXCategoryViewDelegate,JXPagerViewDelegate>
|
@interface XPNewMomentsViewController ()<JXCategoryViewDelegate,JXPagerViewDelegate,XPMonentsRecommendProtocol,XPMomentTopicHeaderViewDelegate>
|
||||||
|
|
||||||
///分页控制器
|
///分页控制器
|
||||||
@property (nonatomic, strong) JXCategoryTitleView *titleView;
|
@property (nonatomic, strong) JXCategoryTitleView *titleView;
|
||||||
@@ -38,6 +42,10 @@
|
|||||||
|
|
||||||
@implementation XPNewMomentsViewController
|
@implementation XPNewMomentsViewController
|
||||||
|
|
||||||
|
- (__kindof id)createPresenter {
|
||||||
|
return [[XPMonentsRecommendPresenter alloc] init];
|
||||||
|
}
|
||||||
|
|
||||||
- (BOOL)isHiddenNavBar {
|
- (BOOL)isHiddenNavBar {
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
@@ -45,6 +53,7 @@
|
|||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
[self initSubViews];
|
[self initSubViews];
|
||||||
|
[self.presenter getMonentsTopicList:1 pageSize:20];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - Private Method
|
#pragma mark - Private Method
|
||||||
@@ -73,9 +82,23 @@
|
|||||||
[self.navigationController pushViewController:publishVC animated:YES];
|
[self.navigationController pushViewController:publishVC animated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - XPMomentTopicHeaderViewDelegate
|
||||||
|
|
||||||
|
- (void)momentTopicHeaderViewClickTopic:(MonentsTopicModel *)topicModel {
|
||||||
|
XPMonentTopicContainerViewController * topicVC = [[XPMonentTopicContainerViewController alloc] init];
|
||||||
|
topicVC.worldId = topicModel.tId;
|
||||||
|
[self.navigationController pushViewController:topicVC animated:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - XPMonentsRecommendProtocol
|
||||||
|
|
||||||
|
- (void)monentsTopicListSuccess:(NSArray *)array {
|
||||||
|
self.headerView.topicList = array;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - JXCategoryViewDelegate
|
#pragma mark - JXCategoryViewDelegate
|
||||||
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
|
- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView {
|
||||||
return 100;
|
return [XPMomentTopicHeaderView getTopicHeaderViewHeight];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView {
|
||||||
@@ -160,6 +183,7 @@
|
|||||||
- (XPMomentTopicHeaderView *)headerView {
|
- (XPMomentTopicHeaderView *)headerView {
|
||||||
if (!_headerView) {
|
if (!_headerView) {
|
||||||
_headerView = [[XPMomentTopicHeaderView alloc] init];
|
_headerView = [[XPMomentTopicHeaderView alloc] init];
|
||||||
|
_headerView.delegate = self;
|
||||||
}
|
}
|
||||||
return _headerView;
|
return _headerView;
|
||||||
}
|
}
|
||||||
@@ -177,6 +201,7 @@
|
|||||||
- (XPMomentListViewController *)recommandVC {
|
- (XPMomentListViewController *)recommandVC {
|
||||||
if (!_recommandVC) {
|
if (!_recommandVC) {
|
||||||
_recommandVC = [[XPMomentListViewController alloc] init];
|
_recommandVC = [[XPMomentListViewController alloc] init];
|
||||||
|
_recommandVC.listType = XPMomentListRecommend;
|
||||||
}
|
}
|
||||||
return _recommandVC;
|
return _recommandVC;
|
||||||
}
|
}
|
||||||
@@ -184,6 +209,7 @@
|
|||||||
- (XPMomentListViewController *)latestVC {
|
- (XPMomentListViewController *)latestVC {
|
||||||
if (!_latestVC) {
|
if (!_latestVC) {
|
||||||
_latestVC = [[XPMomentListViewController alloc] init];
|
_latestVC = [[XPMomentListViewController alloc] init];
|
||||||
|
_latestVC.listType = XPMomentListTypeLatest;
|
||||||
}
|
}
|
||||||
return _latestVC;
|
return _latestVC;
|
||||||
}
|
}
|
||||||
@@ -191,6 +217,7 @@
|
|||||||
- (XPMomentListViewController *)attentionVC {
|
- (XPMomentListViewController *)attentionVC {
|
||||||
if (!_attentionVC) {
|
if (!_attentionVC) {
|
||||||
_attentionVC = [[XPMomentListViewController alloc] init];
|
_attentionVC = [[XPMomentListViewController alloc] init];
|
||||||
|
_attentionVC.listType = XPMomentListTypeAttent;
|
||||||
}
|
}
|
||||||
return _attentionVC;
|
return _attentionVC;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user