8000 支持翻页滚动 · newcoderzhang/LuaViewSDK@eae8111 · GitHub
[go: up one dir, main page]

Skip to content

Commit eae8111

Browse files
author
城西
committed
支持翻页滚动
1 parent d61aa92 commit eae8111

File tree

1 file changed

+41
-33
lines changed

1 file changed

+41
-33
lines changed

IOS/LuaViewSDK/Classes/lvsdk/LVPagerView.m

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ @interface LVPagerView ()
5252
@property (nonatomic,strong) UIScrollView *scrollview;
5353
@property (nonatomic,assign) CGFloat sideLeft;
5454
@property (nonatomic,assign) CGFloat sideRight;
55+
56+
@property (nonatomic,assign) BOOL doubleMode;
5557
@end
5658

5759

@@ -85,6 +87,13 @@ -(id) init:(lv_State*) l {
8587

8688
-(void) createAllCell {
8789
NSInteger num = [self numberOfPagesInPageView];
90+
if( num==2 && ( self.sideLeft!=0 || self.sideRight!=0 ) ) {
91+
// 开始双倍模式
92+
num = 4;
93+
self.doubleMode = YES;
94+
} else {
95+
self.doubleMode = NO;
96+
}
8897
if( num<self.cellArray.count ) {
8998
for( ; num<self.cellArray.count; ){
9099
UIView* view = self.cellArray.lastObject;
@@ -99,7 +108,11 @@ -(void) createAllCell {
99108
}
100109
}
101110
[self resetCellFrame];
102-
self.pagerIndicator.numberOfPages = self.cellArray.count;
111+
if( self.doubleMode ) {
112+
self.pagerIndicator.numberOfPages = 2;
113+
} else {
114+
self.pagerIndicator.numberOfPages = self.cellArray.count;
115+
}
103116

104117
}
105118

@@ -223,6 +236,10 @@ - (LVPagerViewCell*) cellLayoutAtPageIdx:(int)pageIdx {
223236
lview.conentView = cell;
224237
lview.contentViewIsWindow = NO;
225238
if ( l ) {
239+
// 只有两个Cell的时候开启特殊翻倍模式!!!
240+
if( self.doubleMode && pageIdx>=2 ) {
241+
pageIdx = pageIdx-2;
242+
}
226243
if( !cell.isInited ){
227244
cell.isInited = YES;
228245
[cell doInitWithLView:lview];
@@ -271,45 +288,25 @@ - (NSInteger) numberOfPagesInPageView{
271288
return 1;
272289
}
273290

274-
//- (LVPagerIndicator*) callLuaGetIndicator{
275-
// lv_State* L = self.lv_lview.l;
276-
// if( L && self.lv_userData ){
277-
// lv_pushUserdata(L, self.lv_userData);
278-
// lv_pushUDataRef(L, USERDATA_KEY_DELEGATE);
279-
// if( [LVUtil call:L key1:"Indicator" key2:NULL nargs:0 nrets:1] ==0 ) {
280-
// if( lv_type(L, -1)==LV_TUSERDATA ) {
281-
//
282-
// LVUserDataView * user2 = (LVUserDataView *)lv_touserdata(L, -1);
283-
// if( LVIsType(user2, LVUserDataView) ) {
284-
// lv_checkstack(L, 8);
285-
// lv_pushvalue(L, 1);
286-
// lv_pushUDataRef(L, USERDATA_KEY_DELEGATE );
287-
// lv_pushvalue(L, -2);// value
288-
// lv_setfield(L, -2, "Indicator.object");
289-
//
290-
// LVPagerIndicator* pagerIndicator = (__bridge LVPagerIndicator *)(user2->view);
291-
// if( [pagerIndicator isKindOfClass:[LVPagerIndicator class]] ) {
292-
// [self setIndicator:pagerIndicator];// 设置Indicator
293-
// return pagerIndicator;
294-
// }
295-
// }
296-
// }
297-
// }
298-
// }
299-
// return nil;
300-
//}
301-
302291
-(void) setPageIndicatorIdx:(NSInteger)pageIdx{
303292
if( pageIdx>=0 && pageIdx<self.cellArray.count ) {
304-
self.pagerIndicator.currentPage = pageIdx;
293+
if( self.doubleMode && pageIdx>=2 ) {
294+
self.pagerIndicator.currentPage = pageIdx-2;
295+
} else {
296+
self.pagerIndicator.currentPage = pageIdx;
297+
}
305298
}
306299
}
307300

308301

309302
-(void) setIndicator:(LVPagerIndicator*) indicator{
310303
self.pagerIndicator = indicator;
311304
self.pagerIndicator.pagerView = self;
312-
self.pagerIndicator.numberOfPages = self.cellArray.count;
305+
if( self.doubleMode ) {
306+
self.pagerIndicator.numberOfPages = 2;
307+
} else {
308+
self.pagerIndicator.numberOfPages = self.cellArray.count;
309+
}
313310
[self setPageIndicatorIdx:self.pageIdx];
314311
}
315312

@@ -557,6 +554,9 @@ static int previewSide(lv_State *L) {
557554
pagerview.sideLeft = sideLeft;
558555
pagerview.sideRight = sideRight;
559556
pagerview.frame = pagerview.frame;
557+
if( pagerview.cellArray.count==2 ) {
558+
[pagerview reloadDataASync];
559+
}
560560
return 0;
561561
} else {
562562
lv_pushnumber(L, pagerview.sideLeft);
@@ -629,7 +629,11 @@ - (void) callLuaWithScrolling{
629629
lv_checkStack32(l);
630630
double intPart = 0;
631631
double floatPart = modf( pageIndex, &intPart);
632-
lv_pushnumber(l, mapPageIdx( self.pageIdx ) );
632+
NSInteger pageIdx = self.pageIdx;
633+
if( self.doubleMode&& pageIdx>=2 ) {
634+
pageIdx -= 2;
635+
}
636+
lv_pushnumber(l, mapPageIdx( pageIdx ) );
633637
lv_pushnumber(l, floatPart);
634638
lv_pushnumber(l, offsetX - intPart*pageWidth);
635639

@@ -652,7 +656,11 @@ - (void) callLuaWithScrollEnded{
652656
lv_State* l = self.lv_lview.l;
653657
if( l && self.lv_userData ){
654658
lv_checkStack32(l);
655-
lv_pushnumber(l, mapPageIdx(self.pageIdx) );
659+
NSInteger pageIdx = self.pageIdx;
660+
if( self.doubleMode&& pageIdx>=2 ) {
661+
pageIdx -= 2;
662+
}
663+
lv_pushnumber(l, mapPageIdx(pageIdx) );
656664

657665
lv_pushUserdata(l, self.lv_userData);
658666
lv_pushUDataRef(l, USERDATA_KEY_DELEGATE);

0 commit comments

Comments
 (0)
0