Ver Fonte

个人页

Drew há 7 anos atrás
pai
commit
32e02745d8
40 ficheiros alterados com 1306 adições e 0 exclusões
  1. 22 0
      model/Assets.xcassets/baseImage/backBtn.imageset/Contents.json
  2. BIN
      model/Assets.xcassets/baseImage/backBtn.imageset/backBtn@2x.png
  3. BIN
      model/Assets.xcassets/baseImage/backBtn.imageset/backBtn@3x.png
  4. 6 0
      model/Assets.xcassets/个人中心/Contents.json
  5. 23 0
      model/Assets.xcassets/个人中心/icon_member.imageset/Contents.json
  6. BIN
      model/Assets.xcassets/个人中心/icon_member.imageset/icon_member.png
  7. BIN
      model/Assets.xcassets/个人中心/icon_member.imageset/icon_member@2x.png
  8. BIN
      model/Assets.xcassets/个人中心/icon_member.imageset/icon_member@3x.png
  9. 23 0
      model/Assets.xcassets/个人中心/icon_model.imageset/Contents.json
  10. BIN
      model/Assets.xcassets/个人中心/icon_model.imageset/icon_model.png
  11. BIN
      model/Assets.xcassets/个人中心/icon_model.imageset/icon_model@2x.png
  12. BIN
      model/Assets.xcassets/个人中心/icon_model.imageset/icon_model@3x.png
  13. 23 0
      model/Assets.xcassets/个人中心/into_icon_huodong.imageset/Contents.json
  14. BIN
      model/Assets.xcassets/个人中心/into_icon_huodong.imageset/into_icon_huodong.png
  15. BIN
      model/Assets.xcassets/个人中心/into_icon_huodong.imageset/into_icon_huodong@2x.png
  16. BIN
      model/Assets.xcassets/个人中心/into_icon_huodong.imageset/into_icon_huodong@3x.png
  17. 23 0
      model/Assets.xcassets/个人中心/into_icon_jineng.imageset/Contents.json
  18. BIN
      model/Assets.xcassets/个人中心/into_icon_jineng.imageset/into_icon_jineng.png
  19. BIN
      model/Assets.xcassets/个人中心/into_icon_jineng.imageset/into_icon_jineng@2x.png
  20. BIN
      model/Assets.xcassets/个人中心/into_icon_jineng.imageset/into_icon_jineng@3x.png
  21. 23 0
      model/Assets.xcassets/个人中心/into_icon_ziliao.imageset/Contents.json
  22. BIN
      model/Assets.xcassets/个人中心/into_icon_ziliao.imageset/into_icon_ziliao.png
  23. BIN
      model/Assets.xcassets/个人中心/into_icon_ziliao.imageset/into_icon_ziliao@2x.png
  24. BIN
      model/Assets.xcassets/个人中心/into_icon_ziliao.imageset/into_icon_ziliao@3x.png
  25. 17 0
      model/Classes/Controllers/Controller/MineVC/MineNewViewController.h
  26. 32 0
      model/Classes/Controllers/Controller/MineVC/MineNewViewController.m
  27. 22 0
      model/Classes/Controllers/Controller/MineVC/MineNewViewController.xib
  28. 17 0
      model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.h
  29. 267 0
      model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.m
  30. 205 0
      model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.xib
  31. 17 0
      model/Classes/Controllers/Controller/ShareVC/ChooseShareController.h
  32. 32 0
      model/Classes/Controllers/Controller/ShareVC/ChooseShareController.m
  33. 22 0
      model/Classes/Controllers/Controller/ShareVC/ChooseShareController.xib
  34. 12 0
      model/Classes/Controllers/Controller/ShareVC/SharePopViewController.h
  35. 123 0
      model/Classes/Controllers/Controller/ShareVC/SharePopViewController.m
  36. 118 0
      model/Classes/Controllers/Controller/ShareVC/SharePopViewController.xib
  37. 17 0
      model/Classes/Controllers/Controller/ShareVC/ShareProtocol.h
  38. 17 0
      model/Classes/Controllers/Controller/ShareVC/ShareViewController.h
  39. 124 0
      model/Classes/Controllers/Controller/ShareVC/ShareViewController.m
  40. 121 0
      model/Classes/Controllers/Controller/ShareVC/ShareViewController.xib

+ 22 - 0
model/Assets.xcassets/baseImage/backBtn.imageset/Contents.json

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

BIN
model/Assets.xcassets/baseImage/backBtn.imageset/backBtn@2x.png


BIN
model/Assets.xcassets/baseImage/backBtn.imageset/backBtn@3x.png


+ 6 - 0
model/Assets.xcassets/个人中心/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

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

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

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


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


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


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

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

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


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


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


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

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

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


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


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


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

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

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


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


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


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

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

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


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


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


+ 17 - 0
model/Classes/Controllers/Controller/MineVC/MineNewViewController.h

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

+ 32 - 0
model/Classes/Controllers/Controller/MineVC/MineNewViewController.m

@@ -0,0 +1,32 @@
+//
+//  MineNewViewController.m
+//  model
+//
+//  Created by Drew on 2018/10/28.
+//  Copyright © 2018年 Mine. All rights reserved.
+//
+
+#import "MineNewViewController.h"
+
+@interface MineNewViewController ()
+
+@end
+
+@implementation MineNewViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+}
+
+/*
+#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

+ 22 - 0
model/Classes/Controllers/Controller/MineVC/MineNewViewController.xib

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
+        <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="MineNewViewController">
+            <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="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
+        </view>
+    </objects>
+</document>

+ 17 - 0
model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.h

@@ -0,0 +1,17 @@
+//
+//  SettingsViewController.h
+//  千模
+//
+//  Created by Drew on 2018/10/27.
+//  Copyright © 2018年 MUMEI. All rights reserved.
+//
+
+#import "ViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SettingsViewController : ViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 267 - 0
model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.m

@@ -0,0 +1,267 @@
+//
+//  SettingsViewController.m
+//  千模
+//
+//  Created by Drew on 2018/10/27.
+//  Copyright © 2018年 MUMEI. All rights reserved.
+//
+
+#import "SettingsViewController.h"
+#import <AssetsLibrary/AssetsLibrary.h>
+#import <Photos/Photos.h>
+#import "UIImageView+RoundCorner.h"
+#import "TZImageManager.h"
+#import "TZPhotoPreviewController.h"
+#import "TZImagePickerController.h"
+#import "InfoImageViewController.h"
+#import "InfoNickNameViewController.h"
+#import "InfoImageViewController.h"
+#import "InfoNickNameViewController.h"
+#import "InfoPhoneNumViewController.h"
+#import "InfoLevelViewController.h"
+#import "InfoMoneyViewController.h"
+#import "LoginViewController.h"
+
+@interface SettingsViewController () <TZImagePickerControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate>{
+    NSString *nickName;
+}
+@property (weak, nonatomic) IBOutlet UIView *section1;
+@property (weak, nonatomic) IBOutlet UIView *section2;
+@property (weak, nonatomic) IBOutlet UIView *section3;
+@property (weak, nonatomic) IBOutlet UIButton *btnLogout;
+@property (weak, nonatomic) IBOutlet UIImageView *avatar;
+@property (weak, nonatomic) IBOutlet UILabel *nickname;
+@property (weak, nonatomic) IBOutlet UILabel *phone;
+
+@property(nonatomic, strong) UIImagePickerController *imagePickerVc;
+@property(nonatomic, copy) NSData *imageData;
+@property(nonatomic, assign) int photoCount;
+@property(nonatomic, assign) int VideoCount;
+@end
+
+@implementation SettingsViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.navigationItem.title = @"系统设置";
+    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
+    btn.frame = CGRectMake(0, 0, 40, 40);
+    [btn setImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal];
+    btn.imageEdgeInsets =  UIEdgeInsetsMake(0, -20, 0, 0);
+    [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
+    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
+    UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
+    nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
+    self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
+}
+
+-(void)backClick{
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+-(void)viewDidLayoutSubviews{
+    [super viewDidLayoutSubviews];
+    self.btnLogout.layer.cornerRadius = 22;
+    self.btnLogout.layer.shadowColor = [UIColor colorWithRed:255/255.0 green:64/255.0 blue:149/255.0 alpha:0.36].CGColor;
+    self.btnLogout.layer.shadowOffset = CGSizeMake(0,8);
+    self.btnLogout.layer.shadowOpacity = 1;
+    self.btnLogout.layer.shadowRadius = 10;
+    
+}
+
+-(void)viewWillAppear:(BOOL)animated{
+    [super viewWillAppear:animated];
+    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
+    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
+    [self getInfo];
+}
+
+-(void)viewWillDisappear:(BOOL)animated{
+    [super viewWillDisappear:animated];
+    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
+    [self.navigationController.navigationBar setShadowImage:nil];
+}
+
+- (void)getInfo {
+    NSString *str = [NSString stringWithFormat:@"%@memberInfo?action=getuserinfo&PK=%@", webURL, [Helper sharedAccount].accid];
+    [[AHHttpManager sharedManager] POST:str parameters:nil success:^(id responseObject) {
+        NSLog(@"%@", responseObject);
+        if ([[responseObject objectForKey:@"msg"] isEqualToString:@"success"]) {
+            NSDictionary *data = responseObject[@"data"];
+            nickName = data[@"pet"];
+            self.nickname.text = data[@"pet"];
+            self.phone.text = data[@"phone"];
+            [self.avatar sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", imageURl, data[@"hphoto"]]] placeholderImage:[UIImage imageNamed:@"default_avatar"]];
+        } else {
+            [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
+        }
+    }                           failure:^(NSError *error) {
+        NSLog(@"error = %@", error);
+        [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
+    }];
+}
+
+- (void)PushInfo {
+    NSString *str = [NSString stringWithFormat:@"%@/upload", webURL];
+    //    NSString *str = @"http://192.168.0.113:8080/thmodel/upload";
+    NSLog(@"str = %@", str);
+    //    NSString *str = [NSString stringWithFormat:@"%@modelInfo?action=doQryBroke",webURL];
+    AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
+    manger.responseSerializer = [AFHTTPResponseSerializer serializer];
+    manger.requestSerializer = [AFJSONRequestSerializer serializer];
+    manger.securityPolicy.allowInvalidCertificates = YES;
+    NSDictionary *dict = @{@"memberpk": [Helper sharedAccount].accid,
+                           @"action": @"hp"
+                           };
+    [manger POST:str parameters:dict constructingBodyWithBlock:^(id <AFMultipartFormData> _Nonnull formData) {
+        if (_imageData == NULL) {
+            
+        } else {
+            NSLog(@"_imageData = %@", _imageData);
+            
+            [formData appendPartWithFileData:_imageData name:@"img" fileName:@"111.png" mimeType:@"image/png"];
+            NSLog(@"image = %@", _imageData);
+        }
+    }   progress:nil success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {
+        NSLog(@"re = %@", responseObject);
+        
+        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
+        NSString *img = [dic objectForKey:@"img"];
+        [[NIMSDK sharedSDK].userManager updateMyUserInfo:@{@(NIMUserInfoUpdateTagAvatar): [NSString stringWithFormat:@"%@%@", imageURl, img]} completion:nil];
+        NSLog(@"%@", dic);
+    }    failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {
+        
+    }];
+}
+- (IBAction)tapAvatar:(id)sender {
+    UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
+    [actionSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        [self dismissViewControllerAnimated:YES completion:^{
+        }];
+    }]];
+    [actionSheet addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+        [self takePhoto];
+    }]];
+    [actionSheet addAction:[UIAlertAction actionWithTitle:@"选择相册照片" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+        [self pushImagePickerController];
+    }]];
+    [self presentViewController:actionSheet animated:YES completion:nil];
+}
+
+- (IBAction)logout:(id)sender {
+    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"确定退出登录?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
+    [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+        [self setupLoginViewController];
+        [[[NIMSDK sharedSDK] loginManager] logout:^(NSError *error) {
+            
+            NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
+            [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
+        }];
+    }]];
+    [self.navigationController presentViewController:alert animated:YES completion:nil];
+}
+
+- (void)setupLoginViewController {
+    [self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
+    LoginViewController *loginController = [[LoginViewController alloc] init];
+    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginController];
+    self.view.window.rootViewController = nav;
+}
+
+#pragma 上传头像
+
+- (void)pushImagePickerController {
+    
+    TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:1 delegate:self pushPhotoPickerVc:YES];
+    imagePickerVc.allowPickingGif = NO;
+    imagePickerVc.allowPickingVideo = NO;
+    
+    imagePickerVc.allowTakePicture = NO;
+    imagePickerVc.allowCrop = YES;
+    
+    // You can get the photos by block, the same as by delegate.
+    // 你可以通过block或者代理,来得到用户选择的照片.
+    [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
+        
+    }];
+    
+    [self presentViewController:imagePickerVc animated:YES completion:nil];
+}
+
+- (void)takePhoto {
+    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
+    if ((authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) && iOS7Later) {
+        UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"无法使用照相机" message:@"请在iPhone的\"设置-隐私-照片\"选项中,\r允许千模访问你的手机相册" preferredStyle:UIAlertControllerStyleAlert];
+        [actionSheet addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+            [self dismissViewControllerAnimated:YES completion:^{
+            }];
+        }]];
+        [self presentViewController:actionSheet animated:YES completion:nil];
+    } else { // 调用相机
+        self.imagePickerVc = [[UIImagePickerController alloc] init];
+        self.imagePickerVc.delegate = self;
+        UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
+        self.imagePickerVc.sourceType = sourceType;
+        [self presentViewController:self.imagePickerVc animated:YES completion:nil];
+    }
+}
+
+- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
+    if ([picker isKindOfClass:[UIImagePickerController class]]) {
+        [picker dismissViewControllerAnimated:YES completion:nil];
+    }
+}
+
+- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
+    
+    [picker dismissViewControllerAnimated:YES completion:nil];
+    NSString *type = info[UIImagePickerControllerMediaType];
+    if ([type isEqualToString:@"public.image"]) {
+        TZImagePickerController *tzImagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self];
+        
+        [tzImagePickerVc showProgressHUD];
+        UIImage *image = info[UIImagePickerControllerOriginalImage];
+        // save photo and get asset / 保存图片,获取到asset
+        [[TZImageManager manager] savePhotoWithImage:image completion:^(NSError *error) {
+            if (error) {
+                [tzImagePickerVc hideProgressHUD];
+                NSLog(@"图片保存失败 %@", error);
+            } else {
+                [[TZImageManager manager] getCameraRollAlbum:NO allowPickingImage:YES completion:^(TZAlbumModel *model) {
+                    [[TZImageManager manager] getAssetsFromFetchResult:model.result allowPickingVideo:NO allowPickingImage:YES completion:^(NSArray<TZAssetModel *> *models) {
+                        [tzImagePickerVc hideProgressHUD];
+                        TZAssetModel *assetModel = [models firstObject];
+                        if (tzImagePickerVc.sortAscendingByModificationDate) {
+                            assetModel = [models lastObject];
+                        }
+                        // 允许裁剪,去裁剪
+                        TZImagePickerController *imagePicker = [[TZImagePickerController alloc] initCropTypeWithAsset:assetModel.asset photo:image completion:^(UIImage *cropImage, id asset) {
+                            
+                            self.imageData = UIImageJPEGRepresentation(cropImage, 0.2);
+                            self.avatar.image = cropImage;
+                            _imageData = UIImageJPEGRepresentation(cropImage, 0.2);
+                            [self PushInfo];
+                        }];
+                        [self presentViewController:imagePicker animated:YES completion:nil];
+                    }];
+                }];
+            }
+        }];
+    }
+}
+
+- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
+    
+    _imageData = UIImageJPEGRepresentation(photos[0], 0.2);
+    self.avatar.image = photos[0];
+    [picker dismissViewControllerAnimated:YES completion:nil];
+    [self PushInfo];
+}
+
+- (IBAction)changeName:(id)sender {
+    InfoNickNameViewController * nameVc = [[InfoNickNameViewController alloc]init];
+    nameVc.nameStr = nickName;
+    [self.navigationController pushViewController:nameVc animated:YES];
+}
+@end

+ 205 - 0
model/Classes/Controllers/Controller/SettingsVC/SettingsViewController.xib

@@ -0,0 +1,205 @@
+<?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="retina6_1" 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="SettingsViewController">
+            <connections>
+                <outlet property="avatar" destination="dUq-gP-64y" id="eL7-Im-tpA"/>
+                <outlet property="btnLogout" destination="VEr-gX-5S1" id="wZO-GK-Raw"/>
+                <outlet property="nickname" destination="CdQ-xL-QSq" id="Y1d-Nc-qov"/>
+                <outlet property="phone" destination="rXA-ab-vWB" id="Uvv-Mm-SVO"/>
+                <outlet property="section1" destination="jZG-2v-ye3" id="udr-P8-8ZX"/>
+                <outlet property="section2" destination="RMh-Hq-xqF" id="jjG-Q0-IIP"/>
+                <outlet property="section3" destination="WGd-sn-FZj" id="Uzp-oV-D4f"/>
+                <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="414" height="896"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jZG-2v-ye3">
+                    <rect key="frame" x="20" y="54" width="374" height="120"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="b83-1a-GQI" customClass="SettingsItemView">
+                            <rect key="frame" x="0.0" y="0.0" width="374" height="60"/>
+                            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="60" id="tPr-Z4-xsG"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="u3x-PK-78m" appends="YES" id="H1Y-uT-abe"/>
+                            </connections>
+                        </view>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_avatar" translatesAutoresizingMaskIntoConstraints="NO" id="dUq-gP-64y">
+                            <rect key="frame" x="302" y="12" width="36" height="36"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="36" id="SJn-k6-fCr"/>
+                                <constraint firstAttribute="height" constant="36" id="UyP-SC-QhK"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                    <integer key="value" value="18"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W3I-FL-m9s" customClass="SettingsItemView">
+                            <rect key="frame" x="0.0" y="60" width="374" height="60"/>
+                            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="60" id="jg3-BL-ZBq"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="string" keyPath="label" value="昵称"/>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showLine" value="NO"/>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="vEd-rP-LuJ" appends="YES" id="iiq-ab-goD"/>
+                            </connections>
+                        </view>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CdQ-xL-QSq">
+                            <rect key="frame" x="338" y="90" width="0.0" height="0.0"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="b83-1a-GQI" firstAttribute="leading" secondItem="jZG-2v-ye3" secondAttribute="leading" id="20p-Vw-Luy"/>
+                        <constraint firstItem="b83-1a-GQI" firstAttribute="top" secondItem="jZG-2v-ye3" secondAttribute="top" id="9ee-F7-V2I"/>
+                        <constraint firstItem="W3I-FL-m9s" firstAttribute="top" secondItem="b83-1a-GQI" secondAttribute="bottom" id="AO5-Ot-bOp"/>
+                        <constraint firstAttribute="trailing" secondItem="b83-1a-GQI" secondAttribute="trailing" id="E0v-hB-1ad"/>
+                        <constraint firstItem="dUq-gP-64y" firstAttribute="trailing" secondItem="b83-1a-GQI" secondAttribute="trailing" constant="-36" id="GKL-QH-wBa"/>
+                        <constraint firstItem="CdQ-xL-QSq" firstAttribute="trailing" secondItem="W3I-FL-m9s" secondAttribute="trailing" constant="-36" id="HfI-NC-KIu"/>
+                        <constraint firstAttribute="height" constant="120" id="c9f-Ql-cQL"/>
+                        <constraint firstItem="dUq-gP-64y" firstAttribute="centerY" secondItem="b83-1a-GQI" secondAttribute="centerY" id="kuJ-BL-DZW"/>
+                        <constraint firstAttribute="trailing" secondItem="W3I-FL-m9s" secondAttribute="trailing" id="mn8-WD-mDw"/>
+                        <constraint firstItem="W3I-FL-m9s" firstAttribute="leading" secondItem="jZG-2v-ye3" secondAttribute="leading" id="qey-uV-Kme"/>
+                        <constraint firstItem="CdQ-xL-QSq" firstAttribute="centerY" secondItem="W3I-FL-m9s" secondAttribute="centerY" id="vLz-nC-YfM"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                            <integer key="value" value="8"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RMh-Hq-xqF">
+                    <rect key="frame" x="20" y="189" width="374" height="60"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rt3-H0-yo0" customClass="SettingsItemView">
+                            <rect key="frame" x="0.0" y="0.0" width="374" height="60"/>
+                            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="boolean" keyPath="showLine" value="NO"/>
+                                <userDefinedRuntimeAttribute type="string" keyPath="label" value="手机"/>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rXA-ab-vWB">
+                            <rect key="frame" x="338" y="30" width="0.0" height="0.0"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="rXA-ab-vWB" firstAttribute="centerY" secondItem="rt3-H0-yo0" secondAttribute="centerY" id="aDz-s5-OkC"/>
+                        <constraint firstAttribute="height" constant="60" id="bjo-P3-jsu"/>
+                        <constraint firstItem="rt3-H0-yo0" firstAttribute="leading" secondItem="RMh-Hq-xqF" secondAttribute="leading" id="e5p-aM-7dd"/>
+                        <constraint firstAttribute="bottom" secondItem="rt3-H0-yo0" secondAttribute="bottom" id="gfj-oZ-MvR"/>
+                        <constraint firstAttribute="trailing" secondItem="rt3-H0-yo0" secondAttribute="trailing" id="hn5-5G-7YN"/>
+                        <constraint firstItem="rXA-ab-vWB" firstAttribute="trailing" secondItem="rt3-H0-yo0" secondAttribute="trailing" constant="-36" id="hy2-SZ-1bG"/>
+                        <constraint firstItem="rt3-H0-yo0" firstAttribute="top" secondItem="RMh-Hq-xqF" secondAttribute="top" id="xYN-I9-tSx"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                            <integer key="value" value="8"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VEr-gX-5S1">
+                    <rect key="frame" x="20" y="803" width="374" height="44"/>
+                    <color key="backgroundColor" red="1" green="0.25098039215686274" blue="0.58431372549019611" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="44" id="Dsj-f8-eRg"/>
+                    </constraints>
+                    <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
+                    <state key="normal" title="退出登录">
+                        <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    </state>
+                    <connections>
+                        <action selector="logout:" destination="-1" eventType="touchUpInside" id="deU-6W-jnz"/>
+                    </connections>
+                </button>
+                <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WGd-sn-FZj">
+                    <rect key="frame" x="20" y="264" width="374" height="60"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="是否接受消息提示" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d90-Vj-Yhb">
+                            <rect key="frame" x="15" y="21.5" width="114.5" height="17"/>
+                            <fontDescription key="fontDescription" type="boldSystem" pointSize="14"/>
+                            <nil key="textColor"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="arU-7a-FJS">
+                            <rect key="frame" x="310" y="14.5" width="51" height="31"/>
+                            <color key="onTintColor" red="1" green="0.25098039220000001" blue="0.58431372550000005" alpha="1" colorSpace="calibratedRGB"/>
+                        </switch>
+                    </subviews>
+                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                    <constraints>
+                        <constraint firstItem="arU-7a-FJS" firstAttribute="centerY" secondItem="WGd-sn-FZj" secondAttribute="centerY" id="2il-Ep-041"/>
+                        <constraint firstAttribute="trailing" secondItem="arU-7a-FJS" secondAttribute="trailing" constant="15" id="80d-sK-3qc"/>
+                        <constraint firstItem="d90-Vj-Yhb" firstAttribute="leading" secondItem="WGd-sn-FZj" secondAttribute="leading" constant="15" id="Cr2-xg-PdQ"/>
+                        <constraint firstAttribute="height" constant="60" id="OEx-fK-MiL"/>
+                        <constraint firstItem="d90-Vj-Yhb" firstAttribute="centerY" secondItem="WGd-sn-FZj" secondAttribute="centerY" id="Wke-Aa-LMo"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                            <integer key="value" value="8"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.94901960784313721" green="0.95686274509803915" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="trailing" secondItem="RMh-Hq-xqF" secondAttribute="trailing" constant="20" id="AvO-i8-ZRy"/>
+                <constraint firstItem="WGd-sn-FZj" firstAttribute="top" secondItem="RMh-Hq-xqF" secondAttribute="bottom" constant="15" id="FGa-3f-ECL"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="bottom" secondItem="VEr-gX-5S1" secondAttribute="bottom" constant="15" id="HcF-rx-AyE"/>
+                <constraint firstItem="jZG-2v-ye3" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" constant="20" id="LYS-Eg-nPN"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="trailing" secondItem="VEr-gX-5S1" secondAttribute="trailing" constant="20" id="O7P-5w-m8c"/>
+                <constraint firstItem="RMh-Hq-xqF" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" constant="20" id="QtU-bj-SAV"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="trailing" secondItem="WGd-sn-FZj" secondAttribute="trailing" constant="20" id="UYy-sT-K5E"/>
+                <constraint firstItem="WGd-sn-FZj" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" constant="20" id="b55-jc-8uk"/>
+                <constraint firstItem="Q5M-cg-NOt" firstAttribute="trailing" secondItem="jZG-2v-ye3" secondAttribute="trailing" constant="20" id="kpF-3U-y4b"/>
+                <constraint firstItem="jZG-2v-ye3" firstAttribute="top" secondItem="Q5M-cg-NOt" secondAttribute="top" constant="10" id="lrY-WE-HzC"/>
+                <constraint firstItem="VEr-gX-5S1" firstAttribute="leading" secondItem="Q5M-cg-NOt" secondAttribute="leading" constant="20" id="use-1H-uxj"/>
+                <constraint firstItem="RMh-Hq-xqF" firstAttribute="top" secondItem="jZG-2v-ye3" secondAttribute="bottom" constant="15" id="y7p-gC-K1q"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
+            <point key="canvasLocation" x="76.811594202898561" y="52.901785714285715"/>
+        </view>
+        <tapGestureRecognizer id="vEd-rP-LuJ">
+            <connections>
+                <action selector="changeName:" destination="-1" id="d4F-Lv-GdR"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="u3x-PK-78m">
+            <connections>
+                <action selector="tapAvatar:" destination="-1" id="90l-te-ycd"/>
+            </connections>
+        </tapGestureRecognizer>
+    </objects>
+    <resources>
+        <image name="default_avatar" width="36" height="36"/>
+    </resources>
+</document>

+ 17 - 0
model/Classes/Controllers/Controller/ShareVC/ChooseShareController.h

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

+ 32 - 0
model/Classes/Controllers/Controller/ShareVC/ChooseShareController.m

@@ -0,0 +1,32 @@
+//
+//  ChooseShareController.m
+//  model
+//
+//  Created by Drew on 2018/10/28.
+//  Copyright © 2018年 Mine. All rights reserved.
+//
+
+#import "ChooseShareController.h"
+
+@interface ChooseShareController ()
+
+@end
+
+@implementation ChooseShareController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view from its nib.
+}
+
+/*
+#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

+ 22 - 0
model/Classes/Controllers/Controller/ShareVC/ChooseShareController.xib

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
+        <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="ChooseShareController">
+            <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="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <viewLayoutGuide key="safeArea" id="Q5M-cg-NOt"/>
+        </view>
+    </objects>
+</document>

+ 12 - 0
model/Classes/Controllers/Controller/ShareVC/SharePopViewController.h

@@ -0,0 +1,12 @@
+//
+//  ShareViewController.h
+//  KeleAppProject
+//
+//  Created by 熊竹 on 2018/3/5.
+//  Copyright © 2018年 Cen Zhou. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface SharePopViewController : UIViewController
+@end

+ 123 - 0
model/Classes/Controllers/Controller/ShareVC/SharePopViewController.m

@@ -0,0 +1,123 @@
+//
+//  ShareViewController.m
+//  KeleAppProject
+//
+//  Created by 熊竹 on 2018/3/5.
+//  Copyright © 2018年 Cen Zhou. All rights reserved.
+//
+
+#import "SharePopViewController.h"
+#import <WXApi.h>
+
+@interface SharePopViewController ()
+@property(weak, nonatomic) IBOutlet UIView *contentView;
+@property(weak, nonatomic) IBOutlet UIImageView *shareWechat;
+@property(weak, nonatomic) IBOutlet UIImageView *shareTimeline;
+@end
+
+@implementation SharePopViewController
+- (instancetype)init {
+    self = [super init];
+    if (self) {
+        self.modalPresentationStyle = UIModalPresentationOverCurrentContext;
+        self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
+        self.view.userInteractionEnabled = YES;
+    }
+    return self;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)coder {
+    self = [super initWithCoder:coder];
+    if (self) {
+        self.modalPresentationStyle = UIModalPresentationOverCurrentContext;
+        self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
+        self.view.userInteractionEnabled = YES;
+    }
+    return self;
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    self.contentView.transform = CGAffineTransformMakeTranslation(0, 164);
+    self.shareWechat.userInteractionEnabled = YES;
+    self.shareTimeline.userInteractionEnabled = YES;
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+    [super viewWillAppear:animated];
+    [UIView animateWithDuration:0.2
+                          delay:0
+                        options:UIViewAnimationOptionCurveEaseOut
+                     animations:^{
+                         self.contentView.transform = CGAffineTransformMakeTranslation(0, 0);
+                         self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2];
+                     }
+                     completion:nil];
+}
+
+- (IBAction)cancel:(id)sender {
+    [self dismiss];
+}
+
+- (IBAction)tapItem:(id)sender {
+    NSString *str = [NSString stringWithFormat:@"%@memberInfo?action=getuserinfo&PK=%@", webURL, [Helper sharedAccount].accid];
+    [[AHHttpManager sharedManager]
+            POST:str parameters:nil
+         success:^(id responseObject) {
+             NSLog(@"%@", responseObject);
+             if ([[responseObject objectForKey:@"msg"] isEqualToString:@"success"]) {
+                 NSDictionary *data = responseObject[@"data"];
+
+                 if (((UITapGestureRecognizer *) sender).view.tag == 1) {
+                     [self shareToWechat:WXSceneSession withTitle:@"千模通告" description:@"千模通告" url:[NSString stringWithFormat:@"http://www.baidu.com/?code=%@", data[@"qrcode"]]];
+                 } else if (((UITapGestureRecognizer *) sender).view.tag == 2) {
+                     [self shareToWechat:WXSceneTimeline withTitle:@"千模通告" description:@"千模通告" url:[NSString stringWithFormat:@"http://www.baidu.com/?code=%@", data[@"qrcode"]]];
+                 }
+             } else {
+                 [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
+             }
+         } failure:^(NSError *error) {
+                NSLog(@"error = %@", error);
+                [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
+            }];
+    [self dismiss];
+}
+
+- (void)dismiss {
+    [UIView animateWithDuration:0.2
+                          delay:0
+                        options:UIViewAnimationOptionCurveEaseInOut
+                     animations:^{
+                         self.contentView.transform = CGAffineTransformMakeTranslation(0, 164);
+                         self.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
+                     }
+                     completion:^(BOOL finished) {
+                         [self dismissViewControllerAnimated:NO completion:nil];
+                     }];
+}
+
+- (void)shareToWechat:(enum WXScene)scene withTitle:(NSString *)title description:(NSString *)description url:(NSString *)url {
+    SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
+    req.bText = NO;
+    req.scene = scene;
+    WXMediaMessage *urlMessage = [WXMediaMessage message];
+    urlMessage.title = title;
+    urlMessage.description = description;
+    [urlMessage setThumbImage:[UIImage imageNamed:@"AppIcon"]];
+    WXWebpageObject *webObj = [WXWebpageObject object];
+    webObj.webpageUrl = url;
+    urlMessage.mediaObject = webObj;
+    req.message = urlMessage;
+    [WXApi sendReq:req];
+}
+/*
+#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

+ 118 - 0
model/Classes/Controllers/Controller/ShareVC/SharePopViewController.xib

@@ -0,0 +1,118 @@
+<?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="SharePopViewController">
+            <connections>
+                <outlet property="contentView" destination="1iJ-O7-RgC" id="Mgn-KK-viB"/>
+                <outlet property="shareTimeline" destination="kR7-gQ-aQ0" id="Hdv-bW-EdB"/>
+                <outlet property="shareWechat" destination="G4T-wr-2Gr" id="RoC-Tv-nty"/>
+                <outlet property="view" destination="iN0-l3-epB" id="iOJ-US-KoE"/>
+            </connections>
+        </placeholder>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1iJ-O7-RgC">
+                    <rect key="frame" x="0.0" y="503" width="375" height="164"/>
+                    <subviews>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="e9j-DD-tMm">
+                            <rect key="frame" x="0.0" y="120" width="375" height="44"/>
+                            <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="44" id="1Jt-le-9tP"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="tintColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <state key="normal" title="取消"/>
+                            <connections>
+                                <action selector="cancel:" destination="-1" eventType="touchUpInside" id="RbL-0d-hLV"/>
+                            </connections>
+                        </button>
+                        <imageView userInteractionEnabled="NO" tag="1" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="share_icon_weixin" translatesAutoresizingMaskIntoConstraints="NO" id="G4T-wr-2Gr">
+                            <rect key="frame" x="30" y="30" width="44" height="44"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="44" id="Jrh-JE-jip"/>
+                                <constraint firstAttribute="height" constant="44" id="MvK-RD-Lyh"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="pRI-Ch-CY9" appends="YES" id="WB3-hy-qCg"/>
+                            </connections>
+                        </imageView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="il7-ul-qWt">
+                            <rect key="frame" x="39.5" y="80" width="25" height="14.5"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <imageView userInteractionEnabled="NO" tag="2" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="share_icon_pengyouquan" translatesAutoresizingMaskIntoConstraints="NO" id="kR7-gQ-aQ0">
+                            <rect key="frame" x="98" y="30" width="44" height="44"/>
+                            <gestureRecognizers/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="44" id="DaL-7W-j1o"/>
+                                <constraint firstAttribute="height" constant="44" id="xUj-Us-BRP"/>
+                            </constraints>
+                            <connections>
+                                <outletCollection property="gestureRecognizers" destination="lwf-eD-6Yu" appends="YES" id="JI2-7E-vH5"/>
+                            </connections>
+                        </imageView>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Frt-27-s1D">
+                            <rect key="frame" x="101.5" y="80" width="37" height="14.5"/>
+                            <fontDescription key="fontDescription" type="system" pointSize="12"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                    </subviews>
+                    <color key="backgroundColor" red="0.94901960784313721" green="0.95686274509803915" blue="0.96078431372549022" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="e9j-DD-tMm" secondAttribute="trailing" id="6AI-06-Ygn"/>
+                        <constraint firstItem="G4T-wr-2Gr" firstAttribute="top" secondItem="1iJ-O7-RgC" secondAttribute="top" constant="30" id="8qK-bp-yr9"/>
+                        <constraint firstItem="e9j-DD-tMm" firstAttribute="leading" secondItem="1iJ-O7-RgC" secondAttribute="leading" id="BMa-NV-8GF"/>
+                        <constraint firstAttribute="height" constant="164" id="DTP-Oy-ud8"/>
+                        <constraint firstItem="Frt-27-s1D" firstAttribute="centerX" secondItem="kR7-gQ-aQ0" secondAttribute="centerX" id="F7T-kQ-W4V"/>
+                        <constraint firstItem="kR7-gQ-aQ0" firstAttribute="top" secondItem="G4T-wr-2Gr" secondAttribute="top" id="ROW-Hh-hR3"/>
+                        <constraint firstAttribute="bottom" secondItem="e9j-DD-tMm" secondAttribute="bottom" id="Z9L-FA-1cK"/>
+                        <constraint firstItem="il7-ul-qWt" firstAttribute="centerX" secondItem="G4T-wr-2Gr" secondAttribute="centerX" id="Zth-bz-6Kg"/>
+                        <constraint firstItem="Frt-27-s1D" firstAttribute="top" secondItem="kR7-gQ-aQ0" secondAttribute="bottom" constant="6" id="a6C-k2-FqD"/>
+                        <constraint firstItem="il7-ul-qWt" firstAttribute="top" secondItem="G4T-wr-2Gr" secondAttribute="bottom" constant="6" id="bif-dE-Yzg"/>
+                        <constraint firstItem="kR7-gQ-aQ0" firstAttribute="leading" secondItem="G4T-wr-2Gr" secondAttribute="trailing" constant="24" id="cW9-QX-CVq"/>
+                        <constraint firstItem="kR7-gQ-aQ0" firstAttribute="bottom" secondItem="G4T-wr-2Gr" secondAttribute="bottom" id="lOc-cp-bNJ"/>
+                        <constraint firstItem="G4T-wr-2Gr" firstAttribute="leading" secondItem="1iJ-O7-RgC" secondAttribute="leading" constant="30" id="xFk-1a-SJU"/>
+                    </constraints>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="1iJ-O7-RgC" secondAttribute="trailing" id="3OB-yc-yWx"/>
+                <constraint firstItem="1iJ-O7-RgC" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="CAP-s2-0TS"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="1iJ-O7-RgC" secondAttribute="bottom" id="oF1-v4-tzp"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+            <point key="canvasLocation" x="40.799999999999997" y="46.326836581709152"/>
+        </view>
+        <tapGestureRecognizer id="pRI-Ch-CY9">
+            <connections>
+                <action selector="tapItem:" destination="-1" id="r2D-uv-zTV"/>
+            </connections>
+        </tapGestureRecognizer>
+        <tapGestureRecognizer id="9dD-Rp-yYj"/>
+        <tapGestureRecognizer id="lwf-eD-6Yu">
+            <connections>
+                <action selector="tapItem:" destination="-1" id="wvY-vl-Xag"/>
+            </connections>
+        </tapGestureRecognizer>
+    </objects>
+    <resources>
+        <image name="share_icon_pengyouquan" width="44" height="44"/>
+        <image name="share_icon_weixin" width="44" height="44"/>
+    </resources>
+</document>

+ 17 - 0
model/Classes/Controllers/Controller/ShareVC/ShareProtocol.h

@@ -0,0 +1,17 @@
+//
+//  ShareProtocol.h
+//  model
+//
+//  Created by Drew on 2018/10/28.
+//  Copyright © 2018年 Mine. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol ShareProtocol <NSObject>
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 17 - 0
model/Classes/Controllers/Controller/ShareVC/ShareViewController.h

@@ -0,0 +1,17 @@
+//
+//  ShareViewController.h
+//  千模
+//
+//  Created by Drew on 2018/10/25.
+//  Copyright © 2018 MUMEI. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ShareViewController : UIViewController
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 124 - 0
model/Classes/Controllers/Controller/ShareVC/ShareViewController.m

@@ -0,0 +1,124 @@
+//
+//  ShareViewController.m
+//  千模
+//
+//  Created by Drew on 2018/10/25.
+//  Copyright © 2018 MUMEI. All rights reserved.
+//
+
+#import "ShareViewController.h"
+#import "SharePopViewController.h"
+
+@interface ShareViewController ()
+@property (weak, nonatomic) IBOutlet UIView *qrcodeContainer;
+
+@end
+
+@implementation ShareViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+
+    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
+    btn.frame = CGRectMake(0, 0, 40, 40);
+    UIImage *image = [[UIImage imageNamed:@"backBtn"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
+    [btn setImage:image forState:UIControlStateNormal];
+    btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
+    btn.tintColor = [UIColor whiteColor];
+    [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
+    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
+    UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
+    nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
+    self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
+}
+
+- (void)viewDidLayoutSubviews {
+    [super viewWillLayoutSubviews];
+    
+    // gradient
+    CAGradientLayer *gl = [CAGradientLayer layer];
+    gl.frame = self.view.bounds;
+    gl.startPoint = CGPointMake(0.5, 0);
+    gl.endPoint = CGPointMake(0.5, 1);
+    gl.colors = @[(__bridge id) [UIColor colorWithRed:251 / 255.0 green:92 / 255.0 blue:163 / 255.0 alpha:1].CGColor, (__bridge id) [UIColor colorWithRed:253 / 255.0 green:127 / 255.0 blue:141 / 255.0 alpha:1].CGColor];
+    gl.locations = @[@(0), @(1.0f)];
+    [self.view.layer insertSublayer:gl atIndex:0];
+
+    self.qrcodeContainer.layer.cornerRadius = 12;
+    
+    UIImageView *qrcode = [[UIImageView alloc] initWithFrame:CGRectMake(7, 7, self.qrcodeContainer.frame.size.width - 14, self.qrcodeContainer.frame.size.width - 14)];
+    qrcode.image = [self generateQRCod:[NSString stringWithFormat:@"%@share.jsp?code=%@",webURL, [[NSUserDefaults standardUserDefaults] objectForKey:@"qrcode"]] withSize:qrcode.frame.size.width];
+    [self.qrcodeContainer addSubview:qrcode];
+}
+
+- (UIImage*)generateQRCod:(NSString*) content withSize:(CGFloat)size {
+    // 1.创建过滤器,这里的@"CIQRCodeGenerator"是固定的
+    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
+    
+    // 2.恢复默认设置
+    [filter setDefaults];
+    
+    // 3. 给过滤器添加数据
+    NSData *data = [content dataUsingEncoding:NSUTF8StringEncoding];
+    // 注意,这里的value必须是NSData类型
+    [filter setValue:data forKeyPath:@"inputMessage"];
+    
+    // 4. 生成二维码
+    CIImage *image = [filter outputImage];
+    
+    
+    CGRect extent = CGRectIntegral(image.extent);
+    CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
+    
+    // 1. 创建bitmap
+    size_t width = CGRectGetWidth(extent) * scale;
+    size_t height = CGRectGetHeight(extent) * scale;
+    CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();
+    CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);
+    CIContext *context = [CIContext contextWithOptions:nil];
+    CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];
+    CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);
+    CGContextScaleCTM(bitmapRef, scale, scale);
+    CGContextDrawImage(bitmapRef, extent, bitmapImage);
+    
+    // 2.保存bitmap图片
+    CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);
+    CGContextRelease(bitmapRef);
+    CGImageRelease(bitmapImage);
+    return [UIImage imageWithCGImage:scaledImage];
+}
+
+-(void)viewWillAppear:(BOOL)animated{
+    [super viewWillAppear:animated];
+    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
+    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
+    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+    [super viewWillDisappear:animated];
+    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
+    [self.navigationController.navigationBar setShadowImage:nil];
+    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
+}
+
+- (void)backClick {
+    [self.navigationController popViewControllerAnimated:YES];
+}
+
+- (IBAction)share:(id)sender {
+    SharePopViewController *shareVC = [[SharePopViewController alloc] init];
+    [self presentViewController:shareVC animated:NO completion:nil];
+}
+
+/*
+#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

+ 121 - 0
model/Classes/Controllers/Controller/ShareVC/ShareViewController.xib

@@ -0,0 +1,121 @@
+<?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="retina6_1" 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="ShareViewController">
+            <connections>
+                <outlet property="qrcodeContainer" destination="9fy-wv-l4y" id="Hee-E9-4Xu"/>
+                <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="414" height="896"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <subviews>
+                <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" contentInsetAdjustmentBehavior="never" translatesAutoresizingMaskIntoConstraints="NO" id="MqI-vP-4gH">
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                    <subviews>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IiW-Pk-x3Y">
+                            <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
+                            <subviews>
+                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_top_logo" translatesAutoresizingMaskIntoConstraints="NO" id="6oA-Sd-nFk">
+                                    <rect key="frame" x="20" y="78" width="374" height="123"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" secondItem="6oA-Sd-nFk" secondAttribute="height" multiplier="335:110" id="Nwg-fI-DO7"/>
+                                    </constraints>
+                                </imageView>
+                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="img_yaoqing_bg" translatesAutoresizingMaskIntoConstraints="NO" id="cJH-a3-NfY">
+                                    <rect key="frame" x="2" y="216" width="410" height="512.5"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" secondItem="cJH-a3-NfY" secondAttribute="height" multiplier="371:464" id="nJ1-RO-6sx"/>
+                                    </constraints>
+                                </imageView>
+                                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="text_yonghuduan" translatesAutoresizingMaskIntoConstraints="NO" id="KQD-L6-alg">
+                                    <rect key="frame" x="130" y="252" width="154" height="58"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="154" id="fdW-Rh-gpk"/>
+                                        <constraint firstAttribute="height" constant="58" id="sjj-33-EDj"/>
+                                    </constraints>
+                                </imageView>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9fy-wv-l4y">
+                                    <rect key="frame" x="132" y="343" width="150" height="150"/>
+                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="150" id="bgd-Vl-RY0"/>
+                                        <constraint firstAttribute="height" constant="150" id="rbv-JT-i5k"/>
+                                    </constraints>
+                                </view>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="扫一扫下载APP" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Qf-w6-Znp">
+                                    <rect key="frame" x="158" y="503" width="98.5" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XzV-c4-R2R">
+                                    <rect key="frame" x="107" y="553" width="200" height="64"/>
+                                    <constraints>
+                                        <constraint firstAttribute="width" constant="200" id="54K-0p-xZv"/>
+                                        <constraint firstAttribute="height" constant="64" id="Knj-DS-qI3"/>
+                                    </constraints>
+                                    <state key="normal" image="btu_yaoqing"/>
+                                    <connections>
+                                        <action selector="share:" destination="-1" eventType="touchUpInside" id="EBE-pj-2IS"/>
+                                    </connections>
+                                </button>
+                            </subviews>
+                            <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                            <constraints>
+                                <constraint firstItem="XzV-c4-R2R" firstAttribute="centerX" secondItem="IiW-Pk-x3Y" secondAttribute="centerX" id="3Hz-ok-6XY"/>
+                                <constraint firstItem="9fy-wv-l4y" firstAttribute="centerX" secondItem="IiW-Pk-x3Y" secondAttribute="centerX" id="4TL-Kh-3nW"/>
+                                <constraint firstItem="9fy-wv-l4y" firstAttribute="top" secondItem="cJH-a3-NfY" secondAttribute="top" constant="127" id="91X-50-Wi7"/>
+                                <constraint firstAttribute="trailing" secondItem="6oA-Sd-nFk" secondAttribute="trailing" constant="20" id="CwE-pm-3cY"/>
+                                <constraint firstItem="KQD-L6-alg" firstAttribute="centerX" secondItem="IiW-Pk-x3Y" secondAttribute="centerX" id="Nzt-tR-JZL"/>
+                                <constraint firstItem="cJH-a3-NfY" firstAttribute="leading" secondItem="IiW-Pk-x3Y" secondAttribute="leading" constant="2" id="QhE-Cm-Tcf"/>
+                                <constraint firstItem="XzV-c4-R2R" firstAttribute="top" secondItem="3Qf-w6-Znp" secondAttribute="bottom" constant="33" id="XzX-Jo-QKQ"/>
+                                <constraint firstItem="3Qf-w6-Znp" firstAttribute="top" secondItem="9fy-wv-l4y" secondAttribute="bottom" constant="10" id="fOI-Sk-gCh"/>
+                                <constraint firstItem="3Qf-w6-Znp" firstAttribute="centerX" secondItem="9fy-wv-l4y" secondAttribute="centerX" id="nm6-GL-KT2"/>
+                                <constraint firstAttribute="trailing" secondItem="cJH-a3-NfY" secondAttribute="trailing" constant="2" id="oXn-0l-hj2"/>
+                                <constraint firstItem="cJH-a3-NfY" firstAttribute="top" secondItem="6oA-Sd-nFk" secondAttribute="bottom" constant="15" id="tQ2-Gl-bwU"/>
+                                <constraint firstItem="6oA-Sd-nFk" firstAttribute="leading" secondItem="IiW-Pk-x3Y" secondAttribute="leading" constant="20" id="tae-Sf-seH"/>
+                                <constraint firstItem="6oA-Sd-nFk" firstAttribute="top" secondItem="IiW-Pk-x3Y" secondAttribute="top" constant="78" id="u3J-R2-d1Q"/>
+                                <constraint firstItem="KQD-L6-alg" firstAttribute="top" secondItem="cJH-a3-NfY" secondAttribute="top" constant="36" id="wa2-vO-kAu"/>
+                            </constraints>
+                        </view>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="IiW-Pk-x3Y" firstAttribute="top" secondItem="MqI-vP-4gH" secondAttribute="top" id="C7M-5L-Ed8"/>
+                        <constraint firstItem="IiW-Pk-x3Y" firstAttribute="width" secondItem="MqI-vP-4gH" secondAttribute="width" id="FfR-Gb-D43"/>
+                        <constraint firstAttribute="bottom" secondItem="IiW-Pk-x3Y" secondAttribute="bottom" id="ato-Cm-QSd"/>
+                        <constraint firstItem="IiW-Pk-x3Y" firstAttribute="height" secondItem="MqI-vP-4gH" secondAttribute="height" id="eRv-f3-PVR"/>
+                        <constraint firstAttribute="trailing" secondItem="IiW-Pk-x3Y" secondAttribute="trailing" id="gT3-KK-F5T"/>
+                        <constraint firstItem="IiW-Pk-x3Y" firstAttribute="leading" secondItem="MqI-vP-4gH" secondAttribute="leading" id="nR0-n6-Mel"/>
+                    </constraints>
+                </scrollView>
+            </subviews>
+            <color key="backgroundColor" red="0.98431372549019602" green="0.36078431372549019" blue="0.63921568627450975" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="MqI-vP-4gH" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="56x-Rp-ENG"/>
+                <constraint firstItem="MqI-vP-4gH" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="NLc-NV-Txw"/>
+                <constraint firstAttribute="trailing" secondItem="MqI-vP-4gH" secondAttribute="trailing" id="Uza-W2-Gza"/>
+                <constraint firstItem="MqI-vP-4gH" firstAttribute="bottom" secondItem="i5M-Pr-FkT" secondAttribute="bottom" id="tyC-1z-zBX"/>
+            </constraints>
+            <viewLayoutGuide key="safeArea" id="2gR-wR-DLX"/>
+            <point key="canvasLocation" x="95.652173913043484" y="52.901785714285715"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="btu_yaoqing" width="200" height="64"/>
+        <image name="img_top_logo" width="335" height="110"/>
+        <image name="img_yaoqing_bg" width="371" height="464"/>
+        <image name="text_yonghuduan" width="152" height="52"/>
+    </resources>
+</document>