xiongzhu 7 years ago
parent
commit
91e9e2f056

+ 16 - 0
model.xcodeproj/project.pbxproj

@@ -386,6 +386,9 @@
 		3AE8C7AF218B49EC0069D147 /* IntroView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AE8C7AE218B49EC0069D147 /* IntroView.xib */; };
 		3AE8C7AF218B49EC0069D147 /* IntroView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AE8C7AE218B49EC0069D147 /* IntroView.xib */; };
 		3AE8C7B4218B65860069D147 /* RankController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8C7B2218B65860069D147 /* RankController.m */; };
 		3AE8C7B4218B65860069D147 /* RankController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AE8C7B2218B65860069D147 /* RankController.m */; };
 		3AE8C7B5218B65860069D147 /* RankController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AE8C7B3218B65860069D147 /* RankController.xib */; };
 		3AE8C7B5218B65860069D147 /* RankController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AE8C7B3218B65860069D147 /* RankController.xib */; };
+		3AED5D3D21C359FC00B7AA6C /* SwitchClientAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED5D3B21C359FC00B7AA6C /* SwitchClientAlertController.m */; };
+		3AED5D3E21C359FC00B7AA6C /* SwitchClientAlertController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AED5D3C21C359FC00B7AA6C /* SwitchClientAlertController.xib */; };
+		3AED5D4121C3925F00B7AA6C /* SwitchClientPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AED5D4021C3925F00B7AA6C /* SwitchClientPresentationController.m */; };
 		3AF44FDA21856E1600ABEAEB /* MineNewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AF44FD821856E1600ABEAEB /* MineNewViewController.m */; };
 		3AF44FDA21856E1600ABEAEB /* MineNewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AF44FD821856E1600ABEAEB /* MineNewViewController.m */; };
 		3AF44FDB21856E1600ABEAEB /* MineNewViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */; };
 		3AF44FDB21856E1600ABEAEB /* MineNewViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */; };
 		3AF44FE721856F0700ABEAEB /* MineItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AF44FDE21856F0600ABEAEB /* MineItemView.m */; };
 		3AF44FE721856F0700ABEAEB /* MineItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AF44FDE21856F0600ABEAEB /* MineItemView.m */; };
@@ -1182,6 +1185,11 @@
 		3AE8C7B1218B65860069D147 /* RankController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RankController.h; sourceTree = "<group>"; };
 		3AE8C7B1218B65860069D147 /* RankController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RankController.h; sourceTree = "<group>"; };
 		3AE8C7B2218B65860069D147 /* RankController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RankController.m; sourceTree = "<group>"; };
 		3AE8C7B2218B65860069D147 /* RankController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RankController.m; sourceTree = "<group>"; };
 		3AE8C7B3218B65860069D147 /* RankController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RankController.xib; sourceTree = "<group>"; };
 		3AE8C7B3218B65860069D147 /* RankController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RankController.xib; sourceTree = "<group>"; };
+		3AED5D3A21C359FC00B7AA6C /* SwitchClientAlertController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwitchClientAlertController.h; sourceTree = "<group>"; };
+		3AED5D3B21C359FC00B7AA6C /* SwitchClientAlertController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SwitchClientAlertController.m; sourceTree = "<group>"; };
+		3AED5D3C21C359FC00B7AA6C /* SwitchClientAlertController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SwitchClientAlertController.xib; sourceTree = "<group>"; };
+		3AED5D3F21C3925F00B7AA6C /* SwitchClientPresentationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SwitchClientPresentationController.h; sourceTree = "<group>"; };
+		3AED5D4021C3925F00B7AA6C /* SwitchClientPresentationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SwitchClientPresentationController.m; sourceTree = "<group>"; };
 		3AF44FD721856E1600ABEAEB /* MineNewViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MineNewViewController.h; sourceTree = "<group>"; };
 		3AF44FD721856E1600ABEAEB /* MineNewViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MineNewViewController.h; sourceTree = "<group>"; };
 		3AF44FD821856E1600ABEAEB /* MineNewViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MineNewViewController.m; sourceTree = "<group>"; };
 		3AF44FD821856E1600ABEAEB /* MineNewViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MineNewViewController.m; sourceTree = "<group>"; };
 		3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MineNewViewController.xib; sourceTree = "<group>"; };
 		3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MineNewViewController.xib; sourceTree = "<group>"; };
@@ -2542,6 +2550,11 @@
 				3AF44FD721856E1600ABEAEB /* MineNewViewController.h */,
 				3AF44FD721856E1600ABEAEB /* MineNewViewController.h */,
 				3AF44FD821856E1600ABEAEB /* MineNewViewController.m */,
 				3AF44FD821856E1600ABEAEB /* MineNewViewController.m */,
 				3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */,
 				3AF44FD921856E1600ABEAEB /* MineNewViewController.xib */,
+				3AED5D3A21C359FC00B7AA6C /* SwitchClientAlertController.h */,
+				3AED5D3B21C359FC00B7AA6C /* SwitchClientAlertController.m */,
+				3AED5D3C21C359FC00B7AA6C /* SwitchClientAlertController.xib */,
+				3AED5D3F21C3925F00B7AA6C /* SwitchClientPresentationController.h */,
+				3AED5D4021C3925F00B7AA6C /* SwitchClientPresentationController.m */,
 			);
 			);
 			path = MineVC;
 			path = MineVC;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -3000,6 +3013,7 @@
 			files = (
 			files = (
 				2F4A894F211ADB00006D7DD3 /* OnlyTextCell.xib in Resources */,
 				2F4A894F211ADB00006D7DD3 /* OnlyTextCell.xib in Resources */,
 				8848C6942108529B00EDB121 /* HonorTableViewCell.xib in Resources */,
 				8848C6942108529B00EDB121 /* HonorTableViewCell.xib in Resources */,
+				3AED5D3E21C359FC00B7AA6C /* SwitchClientAlertController.xib in Resources */,
 				2F4A8945211ADB00006D7DD3 /* TwoImageCell.xib in Resources */,
 				2F4A8945211ADB00006D7DD3 /* TwoImageCell.xib in Resources */,
 				3AF450032185BD2E00ABEAEB /* SettingsViewController.xib in Resources */,
 				3AF450032185BD2E00ABEAEB /* SettingsViewController.xib in Resources */,
 				2FA1AF99212ACDEF005F12CA /* AgreementViewController.xib in Resources */,
 				2FA1AF99212ACDEF005F12CA /* AgreementViewController.xib in Resources */,
@@ -3196,6 +3210,7 @@
 				3AF44FE921856F0700ABEAEB /* SettingsItemView.m in Sources */,
 				3AF44FE921856F0700ABEAEB /* SettingsItemView.m in Sources */,
 				3A5EC7482186AF5A00A9438E /* ShadowMenu.m in Sources */,
 				3A5EC7482186AF5A00A9438E /* ShadowMenu.m in Sources */,
 				2F8D27E421183E2B00CD7347 /* MessageViewController.m in Sources */,
 				2F8D27E421183E2B00CD7347 /* MessageViewController.m in Sources */,
+				3AED5D4121C3925F00B7AA6C /* SwitchClientPresentationController.m in Sources */,
 				2F8D24F221144AF400CD7347 /* ViewController+MASAdditions.m in Sources */,
 				2F8D24F221144AF400CD7347 /* ViewController+MASAdditions.m in Sources */,
 				2F8D270821183D7400CD7347 /* NIMSessionListCell.m in Sources */,
 				2F8D270821183D7400CD7347 /* NIMSessionListCell.m in Sources */,
 				2F8D26E821183D7300CD7347 /* NIMAvatarImageView.m in Sources */,
 				2F8D26E821183D7300CD7347 /* NIMAvatarImageView.m in Sources */,
@@ -3222,6 +3237,7 @@
 				3AE8C7AA218B2E550069D147 /* ModelCardController.m in Sources */,
 				3AE8C7AA218B2E550069D147 /* ModelCardController.m in Sources */,
 				2F8D26F121183D7300CD7347 /* NIMCreateTeamAnnouncement.m in Sources */,
 				2F8D26F121183D7300CD7347 /* NIMCreateTeamAnnouncement.m in Sources */,
 				2F8D271821183D7400CD7347 /* NIMKitAudioCenter.m in Sources */,
 				2F8D271821183D7400CD7347 /* NIMKitAudioCenter.m in Sources */,
+				3AED5D3D21C359FC00B7AA6C /* SwitchClientAlertController.m in Sources */,
 				2F4A894D211ADB00006D7DD3 /* OnlyTextCell.m in Sources */,
 				2F4A894D211ADB00006D7DD3 /* OnlyTextCell.m in Sources */,
 				2F7FC09421242E6300492F0C /* NSString+NTES.m in Sources */,
 				2F7FC09421242E6300492F0C /* NSString+NTES.m in Sources */,
 				2F8D27C721183DEF00CD7347 /* TZImagePickerController.m in Sources */,
 				2F8D27C721183DEF00CD7347 /* TZImagePickerController.m in Sources */,

+ 23 - 0
model/Assets.xcassets/个人中心/img_qiehuan_logo.imageset/Contents.json

@@ -0,0 +1,23 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "filename" : "img_qiehuan_logo.png",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "img_qiehuan_logo@2x.png",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "filename" : "img_qiehuan_logo@3x.png",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

BIN
model/Assets.xcassets/个人中心/img_qiehuan_logo.imageset/img_qiehuan_logo.png


BIN
model/Assets.xcassets/个人中心/img_qiehuan_logo.imageset/img_qiehuan_logo@2x.png


BIN
model/Assets.xcassets/个人中心/img_qiehuan_logo.imageset/img_qiehuan_logo@3x.png


+ 16 - 18
model/Classes/Controllers/MineVC/MineNewViewController.m

@@ -24,8 +24,10 @@
 #import "WZLBadgeImport.h"
 #import "WZLBadgeImport.h"
 #import "AppDelegate.h"
 #import "AppDelegate.h"
 #import "LoginViewController.h"
 #import "LoginViewController.h"
+#import "SwitchClientAlertController.h"
+#import "SwitchClientPresentationController.h"
 
 
-@interface MineNewViewController () {
+@interface MineNewViewController () <UIViewControllerTransitioningDelegate> {
     BOOL online;
     BOOL online;
 }
 }
 @property(weak, nonatomic) IBOutlet UIView *headView;
 @property(weak, nonatomic) IBOutlet UIView *headView;
@@ -314,23 +316,10 @@
 }
 }
 
 
 - (IBAction)jumpToMemberClient:(id)sender {
 - (IBAction)jumpToMemberClient:(id)sender {
-    NSString *account = [[NSUserDefaults standardUserDefaults] stringForKey:@"account"];
-    NSString *pwd = [[NSUserDefaults standardUserDefaults] stringForKey:@"pwd"];
-    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"chmoMember://login?mobile=%@&pass=%@", account, pwd]];
-    [[UIApplication sharedApplication] openURL:url];
-    if (@available(iOS 10.0, *)) {
-        [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
-            if (!success){
-                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1434021876?mt=8"] options:@{} completionHandler:nil];
-            }
-        }];
-    } else {
-        if (![[UIApplication sharedApplication] canOpenURL:url]){
-            [[UIApplication sharedApplication] openURL:url];
-        } else {
-            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1434021876?mt=8"]];
-        }
-    }
+    SwitchClientAlertController *vc = [[SwitchClientAlertController alloc] init];
+    vc.modalPresentationStyle = UIModalPresentationCustom;
+    vc.transitioningDelegate = self;
+    [self presentViewController:vc animated:YES completion:nil];
 }
 }
 
 
 - (void)updateOnline:(BOOL)state {
 - (void)updateOnline:(BOOL)state {
@@ -406,4 +395,13 @@
 - (UIStatusBarStyle)preferredStatusBarStyle {
 - (UIStatusBarStyle)preferredStatusBarStyle {
     return UIStatusBarStyleLightContent;
     return UIStatusBarStyleLightContent;
 }
 }
+
+#pragma mark - UIViewControllerTransitioningDelegate
+- (UIPresentationController* )presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(UIViewController *)presenting sourceViewController:(UIViewController *)source {
+    if ([presented isKindOfClass:[SwitchClientAlertController class]]) {
+        return [[SwitchClientPresentationController alloc] initWithPresentedViewController:presented presentingViewController:self];
+    }
+    return [[UIPresentationController alloc] initWithPresentedViewController:presented presentingViewController:self];
+}
+
 @end
 @end

+ 17 - 0
model/Classes/Controllers/MineVC/SwitchClientAlertController.h

@@ -0,0 +1,17 @@
+//
+//  SwitchClientAlertController.h
+//  model
+//
+//  Created by Drew on 2018/12/14.
+//  Copyright © 2018 Mine. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SwitchClientAlertController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 58 - 0
model/Classes/Controllers/MineVC/SwitchClientAlertController.m

@@ -0,0 +1,58 @@
+//
+//  SwitchClientAlertController.m
+//  model
+//
+//  Created by Drew on 2018/12/14.
+//  Copyright © 2018 Mine. All rights reserved.
+//
+
+#import "SwitchClientAlertController.h"
+
+@interface SwitchClientAlertController ()
+
+@end
+
+@implementation SwitchClientAlertController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+}
+
+- (IBAction)cancel:(id)sender {
+    [self dismissViewControllerAnimated:YES completion:nil];
+}
+
+- (IBAction)jump:(id)sender {
+    [self dismissViewControllerAnimated:YES completion:^(void){
+        NSString *account = [[NSUserDefaults standardUserDefaults] stringForKey:@"account"];
+        NSString *pwd = [[NSUserDefaults standardUserDefaults] stringForKey:@"pwd"];
+        NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"chmoMember://login?mobile=%@&pass=%@", account, pwd]];
+        [[UIApplication sharedApplication] openURL:url];
+        if (@available(iOS 10.0, *)) {
+            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
+                if (!success){
+                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1434021876?mt=8"] options:@{} completionHandler:nil];
+                }
+            }];
+        } else {
+            if (![[UIApplication sharedApplication] canOpenURL:url]){
+                [[UIApplication sharedApplication] openURL:url];
+            } else {
+                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id1434021876?mt=8"]];
+            }
+        }
+    }];
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 135 - 0
model/Classes/Controllers/MineVC/SwitchClientAlertController.xib

@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="SwitchClientAlertController">
+            <connections>
+                <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
+            <rect key="frame" x="0.0" y="0.0" width="300" height="260"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_qiehuan_logo" translatesAutoresizingMaskIntoConstraints="NO" id="1VJ-n0-5xo">
+                    <rect key="frame" x="44.5" y="16" width="211" height="70"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="211" id="hsP-PX-btl"/>
+                        <constraint firstAttribute="height" constant="70" id="w6f-km-Kky"/>
+                    </constraints>
+                </imageView>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Ic-gv-xXJ">
+                    <rect key="frame" x="0.0" y="96" width="300" height="164"/>
+                    <subviews>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="eph-iv-GZm">
+                            <rect key="frame" x="150" y="120" width="150" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="CUO-kJ-KaS"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
+                            <state key="normal" title="立即查看">
+                                <color key="titleColor" red="0.98431372549999996" green="0.37254901959999998" blue="0.62745098040000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                            <connections>
+                                <action selector="jump:" destination="-1" eventType="touchUpInside" id="Dol-aC-Ivg"/>
+                            </connections>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ln9-OL-ha1">
+                            <rect key="frame" x="0.0" y="119" width="300" height="1"/>
+                            <color key="backgroundColor" red="0.94901960784313721" green="0.95686274509803915" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="1" id="ikd-WE-UCM"/>
+                            </constraints>
+                        </view>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hHE-rU-qTP">
+                            <rect key="frame" x="149.5" y="120" width="1" height="44"/>
+                            <color key="backgroundColor" red="0.94901960784313721" green="0.95686274509803915" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="Ekh-5B-cVY"/>
+                                <constraint firstAttribute="width" constant="1" id="Wrx-G5-0bH"/>
+                            </constraints>
+                        </view>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="查看千模用户端" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2vI-fr-Q84">
+                            <rect key="frame" x="78.5" y="33" width="143" height="24"/>
+                            <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="20"/>
+                            <nil key="textColor"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="点击切换用户端,查看更多精彩内容" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ocg-iU-uSC">
+                            <rect key="frame" x="27.5" y="67" width="245" height="18"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                            <nil key="textColor"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iE2-fB-eLC">
+                            <rect key="frame" x="0.0" y="120" width="150" height="44"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="n7m-Xx-9g1"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <state key="normal" title="稍后再说">
+                                <color key="titleColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                            <connections>
+                                <action selector="cancel:" destination="-1" eventType="touchUpInside" id="zAK-3W-QwO"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="164" id="1Vy-G8-UPe"/>
+                        <constraint firstAttribute="trailing" secondItem="eph-iv-GZm" secondAttribute="trailing" id="3MZ-cb-UQa"/>
+                        <constraint firstItem="eph-iv-GZm" firstAttribute="width" secondItem="iE2-fB-eLC" secondAttribute="width" id="51U-rH-GMz"/>
+                        <constraint firstItem="iE2-fB-eLC" firstAttribute="leading" secondItem="2Ic-gv-xXJ" secondAttribute="leading" id="DhY-FJ-SeH"/>
+                        <constraint firstAttribute="trailing" secondItem="Ln9-OL-ha1" secondAttribute="trailing" id="Dvi-46-sWA"/>
+                        <constraint firstAttribute="bottom" secondItem="iE2-fB-eLC" secondAttribute="bottom" id="QqG-h7-Ky7"/>
+                        <constraint firstItem="Ln9-OL-ha1" firstAttribute="leading" secondItem="2Ic-gv-xXJ" secondAttribute="leading" id="SH0-Vr-nsc"/>
+                        <constraint firstItem="Ocg-iU-uSC" firstAttribute="centerX" secondItem="2Ic-gv-xXJ" secondAttribute="centerX" id="bWW-3h-BaG"/>
+                        <constraint firstItem="2vI-fr-Q84" firstAttribute="centerX" secondItem="2Ic-gv-xXJ" secondAttribute="centerX" id="cfL-0P-40F"/>
+                        <constraint firstItem="Ocg-iU-uSC" firstAttribute="top" secondItem="2vI-fr-Q84" secondAttribute="bottom" constant="10" id="d7D-nH-yvk"/>
+                        <constraint firstItem="iE2-fB-eLC" firstAttribute="top" secondItem="Ln9-OL-ha1" secondAttribute="bottom" id="dOZ-up-uBA"/>
+                        <constraint firstItem="eph-iv-GZm" firstAttribute="height" secondItem="iE2-fB-eLC" secondAttribute="height" id="dzu-hF-OhG"/>
+                        <constraint firstAttribute="bottom" secondItem="eph-iv-GZm" secondAttribute="bottom" id="ebT-sZ-8Lz"/>
+                        <constraint firstItem="hHE-rU-qTP" firstAttribute="centerX" secondItem="2Ic-gv-xXJ" secondAttribute="centerX" id="fRC-bL-5En"/>
+                        <constraint firstItem="eph-iv-GZm" firstAttribute="leading" secondItem="iE2-fB-eLC" secondAttribute="trailing" id="olQ-Lz-0St"/>
+                        <constraint firstAttribute="bottom" secondItem="hHE-rU-qTP" secondAttribute="bottom" id="uyl-yx-Xp2"/>
+                        <constraint firstItem="2vI-fr-Q84" firstAttribute="top" secondItem="2Ic-gv-xXJ" secondAttribute="top" constant="33" id="wpN-H5-sAO"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                            <integer key="value" value="14"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.98431372549019602" green="0.37254901960784315" blue="0.62745098039215685" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="2Ic-gv-xXJ" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" id="0wo-Wc-vJh"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="bottom" secondItem="2Ic-gv-xXJ" secondAttribute="bottom" id="YGd-81-G7x"/>
+                <constraint firstItem="1VJ-n0-5xo" firstAttribute="top" secondItem="Q5M-cg-NOt" secondAttribute="top" constant="16" id="dFw-ez-T6i"/>
+                <constraint firstItem="1VJ-n0-5xo" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="evy-Yz-VMA"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="trailing" secondItem="2Ic-gv-xXJ" secondAttribute="trailing" id="sbY-wX-6Qt"/>
+            </constraints>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
+            <userDefinedRuntimeAttributes>
+                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                    <integer key="value" value="14"/>
+                </userDefinedRuntimeAttribute>
+            </userDefinedRuntimeAttributes>
+            <point key="canvasLocation" x="75.200000000000003" y="206.89655172413794"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="img_qiehuan_logo" width="211" height="70"/>
+    </resources>
+</document>

+ 18 - 0
model/Classes/Controllers/MineVC/SwitchClientPresentationController.h

@@ -0,0 +1,18 @@
+//
+//  SwitchClientPresentationController.h
+//  model
+//
+//  Created by Drew on 2018/12/14.
+//  Copyright © 2018 Mine. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SwitchClientPresentationController : UIPresentationController
+/** 黑色半透明背景 */
+@property (nonatomic, strong) UIView *dimmingView;
+@end
+
+NS_ASSUME_NONNULL_END

+ 95 - 0
model/Classes/Controllers/MineVC/SwitchClientPresentationController.m

@@ -0,0 +1,95 @@
+//
+//  SwitchClientPresentationController.m
+//  model
+//
+//  Created by Drew on 2018/12/14.
+//  Copyright © 2018 Mine. All rights reserved.
+//
+
+#import "SwitchClientPresentationController.h"
+
+@implementation SwitchClientPresentationController
+- (instancetype)initWithPresentedViewController:(UIViewController *)presentedViewController presentingViewController:(UIViewController *)presentingViewController {
+    self = [super initWithPresentedViewController:presentedViewController presentingViewController:presentingViewController];
+    if (self) {
+        // 必须设置 presentedViewController 的 modalPresentationStyle
+        // 在自定义动画效果的情况下,苹果强烈建议设置为 UIModalPresentationCustom
+        presentedViewController.modalPresentationStyle = UIModalPresentationCustom;
+    }
+    return self;
+}
+// 呈现过渡即将开始的时候被调用的
+// 可以在此方法创建和设置自定义动画所需的view
+- (void)presentationTransitionWillBegin {
+    self.containerView.layer.cornerRadius = 14;
+    // 背景遮罩
+    UIView *dimmingView = [[UIView alloc] initWithFrame:self.containerView.bounds];
+    dimmingView.backgroundColor = [UIColor blackColor];
+    dimmingView.opaque = NO; //是否透明
+    dimmingView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+    [dimmingView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dimmingViewTapped:)]];
+    self.dimmingView = dimmingView;
+    
+    [self.containerView addSubview:dimmingView]; // 添加到动画容器View中。
+    
+    // 获取presentingViewController 的转换协调器,应该动画期间的一个类?上下文?之类的,负责动画的一个东西
+    id<UIViewControllerTransitionCoordinator> transitionCoordinator = self.presentingViewController.transitionCoordinator;
+    
+    // 动画期间,背景View的动画方式
+    self.dimmingView.alpha = 0.f;
+    [transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
+        self.dimmingView.alpha = 0.4f;
+    } completion:NULL];
+}
+
+#pragma mark 点击了背景遮罩view
+- (void)dimmingViewTapped:(UITapGestureRecognizer*)sender {
+    [self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
+}
+
+// 在呈现过渡结束时被调用的,并且该方法提供一个布尔变量来判断过渡效果是否完成
+- (void)presentationTransitionDidEnd:(BOOL)completed {
+    // 在取消动画的情况下,可能为NO,这种情况下,应该取消视图的引用,防止视图没有释放
+    if (!completed) {
+        self.dimmingView = nil;
+    }
+}
+
+// 消失过渡即将开始的时候被调用的
+- (void)dismissalTransitionWillBegin {
+    id<UIViewControllerTransitionCoordinator> transitionCoordinator = self.presentingViewController.transitionCoordinator;
+    
+    [transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
+        self.dimmingView.alpha = 0.f;
+    } completion:NULL];
+}
+
+// 消失过渡完成之后调用,此时应该将视图移除,防止强引用
+- (void)dismissalTransitionDidEnd:(BOOL)completed {
+    if (completed == YES) {
+        [self.dimmingView removeFromSuperview];
+        self.dimmingView = nil;
+    }
+}
+
+// 返回目标控制器Viewframe
+- (CGRect)frameOfPresentedViewInContainerView {
+    // 这里直接按照想要的大小写死,其实这样写不好,在第二个Demo里,我们将按照苹果官方Demo,写灵活的获取方式。
+    CGFloat height = 260.f;
+    CGFloat width = 300.f;
+    CGRect containerViewBounds = CGRectMake((self.containerView.bounds.size.width - width) / 2, (self.containerView.bounds.size.height - height) / 2, width, height);
+    return containerViewBounds;
+}
+
+//  建议就这样重写就行,这个应该是控制器内容大小变化时,就会调用这个方法, 比如适配横竖屏幕时,翻转屏幕时
+//  可以使用UIContentContainer的方法来调整任何子视图控制器的大小或位置。
+- (void)preferredContentSizeDidChangeForChildContentContainer:(id<UIContentContainer>)container {
+    [super preferredContentSizeDidChangeForChildContentContainer:container];
+    if (container == self.presentedViewController) [self.containerView setNeedsLayout];
+}
+
+- (void)containerViewWillLayoutSubviews {
+    [super containerViewWillLayoutSubviews];
+    self.dimmingView.frame = self.containerView.bounds;
+}
+@end

+ 0 - 1
model/Classes/Controllers/SettingsVC/SettingsViewController.m

@@ -173,7 +173,6 @@
     [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
     [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
         [self setupLoginViewController];
         [self setupLoginViewController];
         [[[NIMSDK sharedSDK] loginManager] logout:^(NSError *error) {
         [[[NIMSDK sharedSDK] loginManager] logout:^(NSError *error) {
-            
             NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
             NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
             [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
             [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
         }];
         }];

+ 1 - 1
model/Info.plist

@@ -19,7 +19,7 @@
 	<key>CFBundlePackageType</key>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
 	<key>CFBundleShortVersionString</key>
-	<string>1.0.5</string>
+	<string>1.0.6</string>
 	<key>CFBundleURLTypes</key>
 	<key>CFBundleURLTypes</key>
 	<array>
 	<array>
 		<dict>
 		<dict>