@@ -52,6 +52,8 @@ @interface LVPagerView ()
52
52
@property (nonatomic ,strong ) UIScrollView *scrollview;
53
53
@property (nonatomic ,assign ) CGFloat sideLeft;
54
54
@property (nonatomic ,assign ) CGFloat sideRight;
55
+
56
+ @property (nonatomic ,assign ) BOOL doubleMode;
55
57
@end
56
58
57
59
@@ -85,6 +87,13 @@ -(id) init:(lv_State*) l {
85
87
86
88
-(void ) createAllCell {
87
89
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
+ }
88
97
if ( num<self.cellArray .count ) {
89
98
for ( ; num<self.cellArray .count ; ){
90
99
UIView* view = self.cellArray .lastObject ;
@@ -99,7 +108,11 @@ -(void) createAllCell {
99
108
}
100
109
}
101
110
[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
+ }
103
116
104
117
}
105
118
@@ -223,6 +236,10 @@ - (LVPagerViewCell*) cellLayoutAtPageIdx:(int)pageIdx {
223
236
lview.conentView = cell;
224
237
lview.contentViewIsWindow = NO ;
225
238
if ( l ) {
239
+ // 只有两个Cell的时候开启特殊翻倍模式!!!
240
+ if ( self.doubleMode && pageIdx>=2 ) {
241
+ pageIdx = pageIdx-2 ;
242
+ }
226
243
if ( !cell.isInited ){
227
244
cell.isInited = YES ;
228
245
[cell doInitWithLView: lview];
@@ -271,45 +288,25 @@ - (NSInteger) numberOfPagesInPageView{
271
288
return 1 ;
272
289
}
273
290
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
-
302
291
-(void ) setPageIndicatorIdx : (NSInteger )pageIdx {
303
292
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
+ }
305
298
}
306
299
}
307
300
308
301
309
302
-(void ) setIndicator : (LVPagerIndicator*) indicator {
310
303
self.pagerIndicator = indicator;
311
304
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
+ }
313
310
[self setPageIndicatorIdx: self .pageIdx];
314
311
}
315
312
@@ -557,6 +554,9 @@ static int previewSide(lv_State *L) {
557
554
pagerview.sideLeft = sideLeft;
558
555
pagerview.sideRight = sideRight;
559
556
pagerview.frame = pagerview.frame ;
557
+ if ( pagerview.cellArray .count ==2 ) {
558
+ [pagerview reloadDataASync ];
559
+ }
560
560
return 0 ;
561
561
} else {
562
562
lv_pushnumber (L, pagerview.sideLeft );
@@ -629,7 +629,11 @@ - (void) callLuaWithScrolling{
629
629
lv_checkStack32 (l);
630
630
double intPart = 0 ;
631
631
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 ) );
633
637
lv_pushnumber (l, floatPart);
634
638
lv_pushnumber (l, offsetX - intPart*pageWidth);
635
639
@@ -652,7 +656,11 @@ - (void) callLuaWithScrollEnded{
652
656
lv_State* l = self.lv_lview .l ;
653
657
if ( l && self.lv_userData ){
654
658
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) );
656
664
657
665
lv_pushUserdata (l, self.lv_userData );
658
666
lv_pushUDataRef (l, USERDATA_KEY_DELEGATE);
0 commit comments