فهرست منبع

1.修改RedAnt Mobile Result界面更精确横屏适配iPhone X。
2.修改Refresh Footer状态改变。

Pen Li 8 سال پیش
والد
کامیت
d948ca127b

BIN
RedAnt Mobile/RedAnt Mobile.xcodeproj/project.xcworkspace/xcuserdata/macmini1.xcuserdatad/UserInterfaceState.xcuserstate


+ 2 - 2
RedAnt Mobile/RedAnt Mobile/Base.lproj/Main.storyboard

@@ -388,10 +388,10 @@
                     </view>
                     <connections>
                         <outlet property="h_constraint" destination="h6H-4T-JaL" id="HAp-ey-n8l"/>
-                        <outlet property="lead_constraint" destination="ggp-dc-IJi" id="19Q-zH-V8c"/>
+                        <outlet property="lead_constraint" destination="CrH-SH-XYf" id="Jo7-uU-40h"/>
                         <outlet property="scrollview" destination="wBM-b0-JRO" id="8vF-OO-ThB"/>
                         <outlet property="tableview" destination="IdY-hf-Rfp" id="4uF-UP-C5a"/>
-                        <outlet property="trail_constraint" destination="R38-oj-vRo" id="gOM-iV-GxH"/>
+                        <outlet property="trail_constraint" destination="q00-pc-cPu" id="7rT-q8-S75"/>
                         <outlet property="w_constraint" destination="Mfg-Vj-d9e" id="WbW-SN-U1a"/>
                     </connections>
                 </viewController>

+ 21 - 4
RedAnt Mobile/RedAnt Mobile/Refresh/Footer/JLRefreshFooter.m

@@ -12,6 +12,7 @@
 
 @property (nonatomic,strong) NSMutableDictionary *stateTitle;
 @property (nonatomic,strong) UILabel *refreshTitleLabel;
+@property (nonatomic,assign) BOOL stopWithNomore;
 
 @end
 
@@ -39,7 +40,7 @@
 - (NSMutableDictionary *)stateTitle {
     if (!_stateTitle) {
         _stateTitle = [@{
-                         @(JLRefreshStateIdle)          : @"will load More",
+                         @(JLRefreshStateIdle)          : @"pull to load more",
                          @(JLRefreshStatePulling)       : @"will load More",
                          @(JLRefreshStateWillRefresh)   : @"loosen to load more",
                          @(JLRefreshStateRefreshing)    : @"loading...",
@@ -107,7 +108,7 @@
     
     CGFloat offsetY = self.scrollView.jl_offsetY + self.scrollView.jl_height;
     CGFloat startY = self.scrollView.jl_insetBottom + self.scrollView.jl_ContentHeight - self.jl_height;
-    CGFloat idle2WillRefresh = startY + self.jl_height;
+    CGFloat idle2WillRefresh = startY + self.jl_height * 1.5;
     
     if ([self contentSizeIsOutOfScrollViewBounds]) {
         
@@ -118,8 +119,11 @@
        
         
         if (self.scrollView.isDragging) {
-            
-            if (self.state == JLRefreshStateIdle) { // 1
+            if (self.state == JLRefreshStateNoMore) {
+                
+                self.state = JLRefreshStateIdle;
+                
+            } else if (self.state == JLRefreshStateIdle) { // 1
                 
                 self.state = JLRefreshStatePulling; // 2
                 
@@ -140,6 +144,13 @@
             // 停止拖动的减速过程
             if (self.state != JLRefreshStateRefreshing && offsetY >= idle2WillRefresh) {
                 self.state = JLRefreshStateRefreshing;
+            } else {
+                if (self.stopWithNomore) {
+                    [self setState:JLRefreshStateNoMore];
+                }
+                if (self.state != JLRefreshStateNoMore) {
+                    self.state = JLRefreshStateIdle;
+                }
             }
             
         }
@@ -149,11 +160,13 @@
             percentage = 0;
         }
         self.pullPercentage = percentage;
+        
         [self showTip];
         if (self.refreshDelegate && [self.refreshDelegate respondsToSelector:@selector(jl_pullRefresh:state:percentage:)]) {
             [self.refreshDelegate jl_pullRefresh:self state:self.state percentage:self.pullPercentage];
         }
         
+        
     } else {
         
         CGPoint old = [change[@"old"] CGPointValue];
@@ -241,6 +254,7 @@
         if (weakself.refreshDelegate && [weakself.refreshDelegate respondsToSelector:@selector(jl_beginRefresh:)]) {
             
             dispatch_async(dispatch_get_main_queue(), ^{
+                weakself.stopWithNomore = NO;
                 [weakself.refreshDelegate jl_beginRefresh:weakself];
             });
             
@@ -254,6 +268,9 @@
 
 - (void)noMoreData {
     self.state = JLRefreshStateNoMore;
+    if (self.scrollView.isDecelerating) {
+        self.stopWithNomore = YES; // Scrollviewc重新刷新数据后才能赋值NO
+    }
 }
 
 - (void)showTip {

+ 10 - 7
RedAnt Mobile/RedAnt Mobile/ResultViewController.m

@@ -490,7 +490,6 @@ static const int delta = 25;
 //    self.scrollview.contentSize=self.tableview.frame.size;
     
     // auto layout
-    UIView *v = self.tableview.superview;
     int width=[self.content_layout[@"header"][@"width"] intValue];
     if(width<self.view.frame.size.width)
         width=self.view.frame.size.width;
@@ -506,15 +505,19 @@ static const int delta = 25;
         CGFloat right = edgeInsets.right;
         
         self.lead_constraint.constant = left;
-        self.trail_constraint.constant = -right;
+        self.trail_constraint.constant = right;
+        /*
+         * lead 和 trail改变之前
+         * scrollview.size.width = self.view.size.width;
+         * 改变后
+         * scrollview.size.width = self.view.size.width - left - right;
+         * 由于w_contraint本质上是根据scrolliew.size.width决定,实际上使用self.view.size.width计算得到
+         * 所以w_contraint需要 +left +right补偿偏差。
+         */
+        self.w_constraint.constant += left + right;
         // 约束修改后立即重新布局
         [self.view layoutIfNeeded];
         
-        CGSize size = v.bounds.size;
-        size.width += left + right;
-        self.scrollview.contentSize = size;
-//        self.scrollview.contentInset = UIEdgeInsetsMake(0, left, 0, right);
-        
     }
     
 }