Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
TYPagerControllerDemo.xcodeproj/project.xcworkspace/xcuserdata/chengxianghe.xcuserdatad/UserInterfaceState.xcuserstate
TYPagerControllerDemo.xcodeproj/xcuserdata/chengxianghe.xcuserdatad/xcschemes/xcschememanagement.plist
7 changes: 7 additions & 0 deletions TYPagerControllerDemo.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
B072EC0D1F1E37B100736A2E /* TYPagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = B072EC041F1E37B100736A2E /* TYPagerView.m */; };
B072EC0E1F1E37B100736A2E /* TYPagerViewLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = B072EC061F1E37B100736A2E /* TYPagerViewLayout.m */; };
B082E5791F0E79830084C952 /* PagerViewDmeoController.m in Sources */ = {isa = PBXBuildFile; fileRef = B082E5781F0E79830084C952 /* PagerViewDmeoController.m */; };
EBF0109522C0E8CE00C5AFD3 /* TYPagerScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = EBF0109422C0E8CE00C5AFD3 /* TYPagerScrollView.m */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand Down Expand Up @@ -71,6 +72,8 @@
B072EC061F1E37B100736A2E /* TYPagerViewLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TYPagerViewLayout.m; sourceTree = "<group>"; };
B082E5771F0E79830084C952 /* PagerViewDmeoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PagerViewDmeoController.h; sourceTree = "<group>"; };
B082E5781F0E79830084C952 /* PagerViewDmeoController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PagerViewDmeoController.m; sourceTree = "<group>"; };
EBF0109322C0E8CE00C5AFD3 /* TYPagerScrollView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TYPagerScrollView.h; sourceTree = "<group>"; };
EBF0109422C0E8CE00C5AFD3 /* TYPagerScrollView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TYPagerScrollView.m; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -156,6 +159,8 @@
B072EBF61F1E37B100736A2E /* TabPager */ = {
isa = PBXGroup;
children = (
EBF0109322C0E8CE00C5AFD3 /* TYPagerScrollView.h */,
EBF0109422C0E8CE00C5AFD3 /* TYPagerScrollView.m */,
B072EBFF1F1E37B100736A2E /* TYTabPagerView.h */,
B072EC001F1E37B100736A2E /* TYTabPagerView.m */,
B072EBFD1F1E37B100736A2E /* TYTabPagerController.h */,
Expand Down Expand Up @@ -212,6 +217,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
Base,
);
Expand Down Expand Up @@ -248,6 +254,7 @@
2B9C0F531F0E11E7009BC0BD /* ViewController.m in Sources */,
B072EC071F1E37B100736A2E /* TYTabPagerBar.m in Sources */,
B072EC0A1F1E37B100736A2E /* TYTabPagerController.m in Sources */,
EBF0109522C0E8CE00C5AFD3 /* TYPagerScrollView.m in Sources */,
B072EC081F1E37B100736A2E /* TYTabPagerBarCell.m in Sources */,
B0284FE11F1E595D00C733E6 /* TabPagerControllerDemoController.m in Sources */,
B072EC0B1F1E37B100736A2E /* TYTabPagerView.m in Sources */,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>TYPagerControllerDemo.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
</dict>
</plist>
1 change: 1 addition & 0 deletions TYPagerControllerDemo/PagerControllerDmeoController.m
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ - (void)addTabPageBar {

- (void)addPagerController {
TYPagerController *pagerController = [[TYPagerController alloc]init];
pagerController.layout.firstScrollToIndex = 1;
pagerController.layout.prefetchItemCount = 1;
//pagerController.layout.autoMemoryCache = NO;
// 只有当scroll滚动动画停止时才加载pagerview,用于优化滚动时性能
Expand Down
4 changes: 2 additions & 2 deletions TYPagerControllerDemo/TYPagerController/TYPagerController.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
3.if controller will display,will call viewWillAppear.
4.you can register && dequeue controller, usage like tableView
*/
- (UIViewController *)pagerController:(TYPagerController *)pagerController controllerForIndex:(NSInteger)index prefetching:(BOOL)prefetching;
- (UIViewController *_Nullable)pagerController:(TYPagerController *)pagerController controllerForIndex:(NSInteger)index prefetching:(BOOL)prefetching;

@end

Expand Down Expand Up @@ -78,7 +78,7 @@ NS_ASSUME_NONNULL_BEGIN
// register && dequeue's usage like tableView
- (void)registerClass:(Class)Class forControllerWithReuseIdentifier:(NSString *)identifier;
- (void)registerNib:(UINib *)nib forControllerWithReuseIdentifier:(NSString *)identifier;
- (UIViewController *)dequeueReusableControllerWithReuseIdentifier:(NSString *)identifier forIndex:(NSInteger)index;
- (UIViewController *_Nullable)dequeueReusableControllerWithReuseIdentifier:(NSString *)identifier forIndex:(NSInteger)index;

// scroll to index
- (void)scrollToControllerAtIndex:(NSInteger)index animate:(BOOL)animate;
Expand Down
3 changes: 2 additions & 1 deletion TYPagerControllerDemo/TYPagerController/TYPagerController.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
//

#import "TYPagerController.h"
#import "TYPagerScrollView.h"

@interface TYPagerController ()<TYPagerViewLayoutDataSource, TYPagerViewLayoutDelegate> {
// private
Expand Down Expand Up @@ -34,7 +35,7 @@ @implementation TYPagerController

- (TYPagerViewLayout<UIViewController *> *)layout {
if (!_layout) {
UIScrollView *scrollView = [[UIScrollView alloc]init];
TYPagerScrollView *scrollView = [[TYPagerScrollView alloc]init];
TYPagerViewLayout<UIViewController *> *layout = [[TYPagerViewLayout alloc]initWithScrollView:scrollView];
layout.dataSource = self;
layout.delegate = self;
Expand Down
2 changes: 2 additions & 0 deletions TYPagerControllerDemo/TYPagerController/TYPagerViewLayout.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, weak, nullable) id<TYPagerViewLayoutDataSource> dataSource;
@property (nonatomic, weak, nullable) id<TYPagerViewLayoutDelegate> delegate;

@property (nonatomic, assign) NSInteger firstScrollToIndex;// default 0

// strong,will control the delegate,don't set delegate on other place.
@property (nonatomic, strong, readonly) UIScrollView *scrollView;
// if viewcontroller's automaticallyAdjustsScrollViewInsets YES ,will cause frame problems, you can set YES, default YES
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ @interface TYPagerViewLayout<ItemType> ()<UIScrollViewDelegate> {
BOOL _scrollAnimated;
BOOL _isTapScrollMoved;
CGFloat _preOffsetX;
NSInteger _firstScrollToIndex;
BOOL _didReloadData;
BOOL _didLayoutSubViews;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//
// TYPagerScrollView.h
// TYPagerControllerDemo
//
// Created by 程祥贺 on 2019/6/24.
// Copyright © 2019 tany. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface TYPagerScrollView : UIScrollView

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// TYPagerScrollView.m
// TYPagerControllerDemo
//
// Created by 程祥贺 on 2019/6/24.
// Copyright © 2019 tany. All rights reserved.
//

#import "TYPagerScrollView.h"

@implementation TYPagerScrollView

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
// 首先判断otherGestureRecognizer是不是系统pop手势
if ([otherGestureRecognizer.view isKindOfClass:NSClassFromString(@"UILayoutContainerView")]) {
// 再判断系统手势的state是began还是fail,同时判断scrollView的位置是不是正好在最左边
if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan && self.contentOffset.x == 0) {
return YES;
}
}
return NO;
}

@end
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ - (void)reloadData {
[_delegate pagerTabBar:self configureLayout:self.layout];
}
[self.layout layoutIfNeed];
[_progressView setBackgroundColor:_layout.progressColor];
[_collectionView reloadData];
[self.layout adjustContentCellsCenterInBar];
[self.layout layoutSubViews];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ - (void)transitionFromCell:(UICollectionViewCell<TYTabPagerBarCellProtocol> *)fr
fromCell.transform = CGAffineTransformMakeScale(_selectFontScale, _selectFontScale);
}
if (toCell) {
toCell.titleLabel.font = _normalTextFont;
toCell.titleLabel.font = _selectedTextFont ? _selectedTextFont : _normalTextFont;
toCell.titleLabel.textColor = _selectedTextColor ? _selectedTextColor : _normalTextColor;
toCell.transform = CGAffineTransformIdentity;
}
Expand Down