5">65
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vth-es-l5X">
@@ -68,7 +68,7 @@
68 68
                                 <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
69 69
                                 <nil key="highlightedColor"/>
70 70
                             </label>
71
-                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-评论" translatesAutoresizingMaskIntoConstraints="NO" id="31M-cU-gad">
71
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-comment" translatesAutoresizingMaskIntoConstraints="NO" id="31M-cU-gad">
72 72
                                 <rect key="frame" x="64.5" y="-2" width="36" height="36"/>
73 73
                             </imageView>
74 74
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="koM-0x-z5o">
@@ -119,7 +119,7 @@
119 119
         </collectionViewCell>
120 120
     </objects>
121 121
     <resources>
122
-        <image name="icon-评论" width="36" height="36"/>
123
-        <image name="icon-赞" width="36" height="36"/>
122
+        <image name="icon-comment" width="36" height="36"/>
123
+        <image name="icon-thumbup" width="36" height="36"/>
124 124
     </resources>
125 125
 </document>

+ 131 - 98
PaiAi/Paiai_iOS/App/PhotoDetail/PhotoDetail.storyboard

@@ -63,7 +63,7 @@
63 63
                                                             <color key="textColor" red="0.98431372549999996" green="0.31372549020000001" blue="0.31372549020000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
64 64
                                                             <nil key="highlightedColor"/>
65 65
                                                         </label>
66
-                                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="进入群" translatesAutoresizingMaskIntoConstraints="NO" id="70o-zv-I0l">
66
+                                                        <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="BTN-enterGroup" translatesAutoresizingMaskIntoConstraints="NO" id="70o-zv-I0l">
67 67
                                                             <rect key="frame" x="9" y="11.5" width="60" height="25"/>
68 68
                                                             <constraints>
69 69
                                                                 <constraint firstAttribute="height" constant="25" id="X8l-P5-3Rd"/>
@@ -421,13 +421,12 @@
421 421
                                             </userDefinedRuntimeAttribute>
422 422
                                         </userDefinedRuntimeAttributes>
423 423
                                     </textField>
424
-                                    <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oef-gW-sEK">
424
+                                    <button opaque="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oef-gW-sEK">
425 425
                                         <rect key="frame" x="303" y="10" width="60" height="36"/>
426
-                                        <color key="backgroundColor" red="0.9995151162147522" green="0.16799759864807129" blue="0.24112263321876526" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
427 426
                                         <constraints>
428 427
                                             <constraint firstAttribute="width" constant="60" id="lDb-Za-vrb"/>
429 428
                                         </constraints>
430
-                                        <state key="normal" title="发表">
429
+                                        <state key="normal" title="发表" backgroundImage="BTN-send">
431 430
                                             <color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
432 431
                                         </state>
433 432
                                         <connections>
@@ -460,7 +459,7 @@
460 459
                                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lCw-zE-NnH">
461 460
                                         <rect key="frame" x="0.0" y="0.0" width="375" height="48"/>
462 461
                                         <subviews>
463
-                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="购买-去水印" translatesAutoresizingMaskIntoConstraints="NO" id="pvN-rn-4Jn">
462
+                                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-purchase-watermark" translatesAutoresizingMaskIntoConstraints="NO" id="pvN-rn-4Jn">
464 463
                                                 <rect key="frame" x="123.5" y="0.0" width="48" height="48"/>
465 464
                                                 <constraints>
466 465
                                                     <constraint firstAttribute="height" constant="48" id="2VC-Nk-MXl"/>
@@ -514,6 +513,9 @@
514 513
                             <constraint firstItem="M7B-fx-M7f" firstAttribute="leading" secondItem="9gv-8b-ehH" secondAttribute="leading" id="svX-zh-yc8"/>
515 514
                         </constraints>
516 515
                         <viewLayoutGuide key="safeArea" id="9gv-8b-ehH"/>
516
+                        <connections>
517
+                            <outletCollection property="gestureRecognizers" destination="bqM-7G-5Nw" appends="YES" id="9Q0-1V-Lwz"/>
518
+                        </connections>
517 519
                     </view>
518 520
                     <size key="freeformSize" width="375" height="1000"/>
519 521
                     <connections>
@@ -527,6 +529,7 @@
527 529
                         <outlet property="enterGroupView" destination="gSr-Cm-y1W" id="bNT-Z4-eOG"/>
528 530
                         <outlet property="groupAvatar" destination="nng-M9-7cj" id="Y42-Tc-QnV"/>
529 531
                         <outlet property="groupName" destination="XM7-FX-tOk" id="ifP-h1-72j"/>
532
+                        <outlet property="keyboardGestureRcognizer" destination="bqM-7G-5Nw" id="uUS-Ox-osk"/>
530 533
                         <outlet property="photoCollectionView" destination="dtf-M8-otl" id="VlY-wa-ekc"/>
531 534
                         <outlet property="photoTime" destination="QpI-Mp-URP" id="rJM-TG-fZW"/>
532 535
                         <outlet property="sendBtn" destination="oef-gW-sEK" id="3RV-uD-3q1"/>
@@ -541,12 +544,17 @@
541 544
                     </connections>
542 545
                 </viewController>
543 546
                 <placeholder placeholderIdentifier="IBFirstResponder" id="MFn-pn-5Jb" userLabel="First Responder" sceneMemberID="firstResponder"/>
544
-                <tapGestureRecognizer id="thN-TP-atT" userLabel="purchaseGestureRecognizer">
547
+                <tapGestureRecognizer enabled="NO" id="bqM-7G-5Nw" userLabel="keyboard Gesture Recognizer">
548
+                    <connections>
549
+                        <action selector="recyclingKeyboard:" destination="qsT-Pc-Bhh" id="BWK-9f-gfv"/>
550
+                    </connections>
551
+                </tapGestureRecognizer>
552
+                <tapGestureRecognizer id="thN-TP-atT" userLabel="purchase Gesture Recognizer">
545 553
                     <connections>
546 554
                         <action selector="purchase:" destination="qsT-Pc-Bhh" id="qjs-Ot-XwA"/>
547 555
                     </connections>
548 556
                 </tapGestureRecognizer>
549
-                <tapGestureRecognizer id="EHE-XX-kIE" userLabel="enterGroupGestureRecognizer">
557
+                <tapGestureRecognizer id="EHE-XX-kIE" userLabel="enter Group Gesture Recognizer">
550 558
                     <connections>
551 559
                         <action selector="enterGroup:" destination="qsT-Pc-Bhh" id="dZE-ok-iUM"/>
552 560
                     </connections>
@@ -554,122 +562,146 @@
554 562
             </objects>
555 563
             <point key="canvasLocation" x="-1452" y="1137.9310344827586"/>
556 564
         </scene>
557
-        <!--ShareController-->
565
+        <!--Share View Controller-->
558 566
         <scene sceneID="UTe-rv-qoO">
559 567
             <objects>
560
-                <viewController storyboardIdentifier="ShareController" automaticallyAdjustsScrollViewInsets="NO" id="KnW-jg-4H5" userLabel="ShareController" customClass="ShareController" customModule="Paiai_iOS" customModuleProvider="target" sceneMemberID="viewController">
568
+                <viewController storyboardIdentifier="ShareViewController" automaticallyAdjustsScrollViewInsets="NO" id="KnW-jg-4H5" customClass="ShareViewController" customModule="Paiai_iOS" customModuleProvider="target" sceneMemberID="viewController">
561 569
                     <view key="view" contentMode="scaleToFill" id="rN5-Zb-vwm">
562 570
                         <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
563 571
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
564 572
                         <subviews>
565
-                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xUW-ue-yp5">
573
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="edT-EA-xhZ" userLabel="Share View">
566 574
                                 <rect key="frame" x="0.0" y="463" width="375" height="77"/>
567 575
                                 <subviews>
568
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qpb-ag-Zb8">
569
-                                        <rect key="frame" x="30.5" y="0.0" width="54" height="54"/>
576
+                                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="itC-HJ-ZaT" userLabel="circle">
577
+                                        <rect key="frame" x="30.5" y="0.0" width="54" height="71"/>
578
+                                        <subviews>
579
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yKG-rx-pgX">
580
+                                                <rect key="frame" x="0.0" y="0.0" width="54" height="54"/>
581
+                                                <constraints>
582
+                                                    <constraint firstAttribute="width" constant="54" id="CuL-Dq-ZdA"/>
583
+                                                    <constraint firstAttribute="height" constant="54" id="N1z-wg-bWj"/>
584
+                                                </constraints>
585
+                                                <state key="normal" image="share-wxCircle"/>
586
+                                                <connections>
587
+                                                    <action selector="shareToFriendCircle" destination="KnW-jg-4H5" eventType="touchUpInside" id="l8P-Cd-0ds"/>
588
+                                                </connections>
589
+                                            </button>
590
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3pg-qO-r4l">
591
+                                                <rect key="frame" x="5.5" y="54" width="43" height="17"/>
592
+                                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
593
+                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
594
+                                                <nil key="highlightedColor"/>
595
+                                            </label>
596
+                                        </subviews>
570 597
                                         <constraints>
571
-                                            <constraint firstAttribute="height" constant="54" id="1zd-z7-bRA"/>
572
-                                            <constraint firstAttribute="width" constant="54" id="la0-N0-BGD"/>
598
+                                            <constraint firstAttribute="width" constant="54" id="7c7-Ce-enL"/>
573 599
                                         </constraints>
574
-                                        <state key="normal" image="分享-朋友圈"/>
575
-                                        <connections>
576
-                                            <action selector="shareToFriendCircle" destination="KnW-jg-4H5" eventType="touchUpInside" id="3as-uU-Hcb"/>
577
-                                        </connections>
578
-                                    </button>
579
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6ux-OL-8wy">
580
-                                        <rect key="frame" x="117" y="0.0" width="54" height="54"/>
600
+                                    </stackView>
601
+                                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="W6V-MR-s2s" userLabel="weixin">
602
+                                        <rect key="frame" x="117" y="0.0" width="54" height="71"/>
603
+                                        <subviews>
604
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WHf-tp-9sX">
605
+                                                <rect key="frame" x="0.0" y="0.0" width="54" height="54"/>
606
+                                                <constraints>
607
+                                                    <constraint firstAttribute="height" constant="54" id="VCa-wM-G0W"/>
608
+                                                    <constraint firstAttribute="width" constant="54" id="bOu-A0-deg"/>
609
+                                                </constraints>
610
+                                                <state key="normal" image="share-wx"/>
611
+                                                <connections>
612
+                                                    <action selector="shareToFriendCircle" destination="KnW-jg-4H5" eventType="touchUpInside" id="HIE-st-eD9"/>
613
+                                                </connections>
614
+                                            </button>
615
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ju7-a4-MAb" userLabel="微信">
616
+                                                <rect key="frame" x="12.5" y="54" width="29" height="17"/>
617
+                                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
618
+                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
619
+                                                <nil key="highlightedColor"/>
620
+                                            </label>
621
+                                        </subviews>
581 622
                                         <constraints>
582
-                                            <constraint firstAttribute="width" constant="54" id="5X9-C3-GLj"/>
583
-                                            <constraint firstAttribute="height" constant="54" id="8b9-pJ-MY4"/>
623
+                                            <constraint firstAttribute="width" constant="54" id="U1a-2q-73r"/>
584 624
                                         </constraints>
585
-                                        <state key="normal" image="分享-微信好友"/>
586
-                                        <connections>
587
-                                            <action selector="shareToWei" destination="KnW-jg-4H5" eventType="touchUpInside" id="6Sc-0e-z9l"/>
588
-                                        </connections>
589
-                                    </button>
590
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="x2h-L3-H9s">
591
-                                        <rect key="frame" x="285.5" y="0.0" width="54" height="54"/>
625
+                                    </stackView>
626
+                                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="KU1-aO-nLf" userLabel="QQ">
627
+                                        <rect key="frame" x="202" y="0.0" width="54" height="71"/>
628
+                                        <subviews>
629
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="kgp-ou-XXF">
630
+                                                <rect key="frame" x="0.0" y="0.0" width="54" height="54"/>
631
+                                                <constraints>
632
+                                                    <constraint firstAttribute="width" constant="54" id="HIs-RN-iJa"/>
633
+                                                    <constraint firstAttribute="height" constant="54" id="sjs-5I-q9G"/>
634
+                                                </constraints>
635
+                                                <state key="normal" image="share-QQ"/>
636
+                                                <connections>
637
+                                                    <action selector="shareToFriendCircle" destination="KnW-jg-4H5" eventType="touchUpInside" id="uxZ-de-KlE"/>
638
+                                                </connections>
639
+                                            </button>
640
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cQk-kV-x1B" userLabel="QQ">
641
+                                                <rect key="frame" x="16.5" y="54" width="21.5" height="17"/>
642
+                                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
643
+                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
644
+                                                <nil key="highlightedColor"/>
645
+                                            </label>
646
+                                        </subviews>
592 647
                                         <constraints>
593
-                                            <constraint firstAttribute="width" constant="54" id="JUP-IW-DiC"/>
594
-                                            <constraint firstAttribute="height" constant="54" id="xGJ-At-rzn"/>
648
+                                            <constraint firstAttribute="width" constant="54" id="Meq-Td-X06"/>
595 649
                                         </constraints>
596
-                                        <state key="normal" image="分享-微博"/>
597
-                                        <connections>
598
-                                            <action selector="shareToWeibo" destination="KnW-jg-4H5" eventType="touchUpInside" id="VYj-hh-MyW"/>
599
-                                        </connections>
600
-                                    </button>
601
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yqF-ZW-9kd">
602
-                                        <rect key="frame" x="202" y="0.0" width="54" height="54"/>
650
+                                    </stackView>
651
+                                    <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="ZLk-gf-Jzh" userLabel="weibo">
652
+                                        <rect key="frame" x="285.5" y="0.0" width="54" height="71"/>
653
+                                        <subviews>
654
+                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="uCq-aJ-DOY">
655
+                                                <rect key="frame" x="0.0" y="0.0" width="54" height="54"/>
656
+                                                <constraints>
657
+                                                    <constraint firstAttribute="width" constant="54" id="9PQ-od-zwh"/>
658
+                                                    <constraint firstAttribute="height" constant="54" id="Dd2-ob-7nA"/>
659
+                                                </constraints>
660
+                                                <state key="normal" image="share-weibo"/>
661
+                                                <connections>
662
+                                                    <action selector="shareToFriendCircle" destination="KnW-jg-4H5" eventType="touchUpInside" id="inK-7r-8gZ"/>
663
+                                                </connections>
664
+                                            </button>
665
+                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微博" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ycS-qw-cbn" userLabel="微博">
666
+                                                <rect key="frame" x="12.5" y="54" width="29" height="17"/>
667
+                                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
668
+                                                <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
669
+                                                <nil key="highlightedColor"/>
670
+                                            </label>
671
+                                        </subviews>
603 672
                                         <constraints>
604
-                                            <constraint firstAttribute="height" constant="54" id="3gE-we-sHc"/>
605
-                                            <constraint firstAttribute="width" constant="54" id="j1v-So-HZy"/>
673
+                                            <constraint firstAttribute="width" constant="54" id="JRS-hW-4fd"/>
606 674
                                         </constraints>
607
-                                        <state key="normal" image="分享-QQ"/>
608
-                                        <connections>
609
-                                            <action selector="shareToQQ" destination="KnW-jg-4H5" eventType="touchUpInside" id="AUu-PL-Vdh"/>
610
-                                        </connections>
611
-                                    </button>
612
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="朋友圈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nO4-Ve-OiO">
613
-                                        <rect key="frame" x="36" y="60" width="43" height="17"/>
614
-                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
615
-                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
616
-                                        <nil key="highlightedColor"/>
617
-                                    </label>
618
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微信" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KS7-62-qGm">
619
-                                        <rect key="frame" x="129.5" y="60" width="29" height="17"/>
620
-                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
621
-                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
622
-                                        <nil key="highlightedColor"/>
623
-                                    </label>
624
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QQ" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HHz-QK-Fr2">
625
-                                        <rect key="frame" x="218" y="60" width="22" height="17"/>
626
-                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
627
-                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
628
-                                        <nil key="highlightedColor"/>
629
-                                    </label>
630
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="微博" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xa5-ke-ek6">
631
-                                        <rect key="frame" x="298" y="60" width="29" height="17"/>
632
-                                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
633
-                                        <color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
634
-                                        <nil key="highlightedColor"/>
635
-                                    </label>
675
+                                    </stackView>
636 676
                                 </subviews>
637 677
                                 <constraints>
638
-                                    <constraint firstItem="HHz-QK-Fr2" firstAttribute="centerX" secondItem="yqF-ZW-9kd" secondAttribute="centerX" id="7l8-1r-eQh"/>
639
-                                    <constraint firstAttribute="bottom" secondItem="HHz-QK-Fr2" secondAttribute="bottom" id="FSC-Ek-9t8"/>
640
-                                    <constraint firstItem="yqF-ZW-9kd" firstAttribute="centerY" secondItem="qpb-ag-Zb8" secondAttribute="centerY" id="KPI-J0-KS4"/>
641
-                                    <constraint firstItem="xa5-ke-ek6" firstAttribute="centerX" secondItem="x2h-L3-H9s" secondAttribute="centerX" id="M27-U4-Q3M"/>
642
-                                    <constraint firstAttribute="height" constant="77" id="N2d-i8-gd3"/>
643
-                                    <constraint firstItem="yqF-ZW-9kd" firstAttribute="centerX" secondItem="xUW-ue-yp5" secondAttribute="centerX" multiplier="220:180" id="NbH-9w-UIS"/>
644
-                                    <constraint firstAttribute="bottom" secondItem="KS7-62-qGm" secondAttribute="bottom" id="PSC-uY-GlG"/>
645
-                                    <constraint firstItem="x2h-L3-H9s" firstAttribute="centerY" secondItem="qpb-ag-Zb8" secondAttribute="centerY" id="X1L-d4-RO3"/>
646
-                                    <constraint firstItem="qpb-ag-Zb8" firstAttribute="top" secondItem="xUW-ue-yp5" secondAttribute="top" id="Xhp-xq-TAQ"/>
647
-                                    <constraint firstItem="6ux-OL-8wy" firstAttribute="centerX" secondItem="xUW-ue-yp5" secondAttribute="centerX" multiplier="138:180" id="b7V-Ap-t1L"/>
648
-                                    <constraint firstAttribute="bottom" secondItem="nO4-Ve-OiO" secondAttribute="bottom" id="dJP-qK-Tlu"/>
649
-                                    <constraint firstItem="KS7-62-qGm" firstAttribute="centerX" secondItem="6ux-OL-8wy" secondAttribute="centerX" id="eHD-Mp-ViT"/>
650
-                                    <constraint firstItem="nO4-Ve-OiO" firstAttribute="centerX" secondItem="qpb-ag-Zb8" secondAttribute="centerX" id="gw3-SW-dNJ"/>
651
-                                    <constraint firstItem="x2h-L3-H9s" firstAttribute="centerX" secondItem="xUW-ue-yp5" secondAttribute="centerX" multiplier="300:180" id="rbh-jj-rpj"/>
652
-                                    <constraint firstItem="qpb-ag-Zb8" firstAttribute="centerX" secondItem="xUW-ue-yp5" secondAttribute="centerX" multiplier="55:180" id="sWn-3o-xfe"/>
653
-                                    <constraint firstAttribute="bottom" secondItem="xa5-ke-ek6" secondAttribute="bottom" id="uCt-id-dos"/>
654
-                                    <constraint firstItem="6ux-OL-8wy" firstAttribute="centerY" secondItem="qpb-ag-Zb8" secondAttribute="centerY" id="xcU-1M-cr8"/>
678
+                                    <constraint firstItem="KU1-aO-nLf" firstAttribute="top" secondItem="edT-EA-xhZ" secondAttribute="top" id="2U4-8e-O3g"/>
679
+                                    <constraint firstItem="ZLk-gf-Jzh" firstAttribute="centerX" secondItem="edT-EA-xhZ" secondAttribute="centerX" multiplier="300:180" id="3Kp-5r-ImR"/>
680
+                                    <constraint firstItem="itC-HJ-ZaT" firstAttribute="centerX" secondItem="edT-EA-xhZ" secondAttribute="centerX" multiplier="55:180" id="7D5-Uy-aAS"/>
681
+                                    <constraint firstItem="W6V-MR-s2s" firstAttribute="top" secondItem="edT-EA-xhZ" secondAttribute="top" id="B2o-vs-NbY"/>
682
+                                    <constraint firstItem="KU1-aO-nLf" firstAttribute="centerX" secondItem="edT-EA-xhZ" secondAttribute="centerX" multiplier="220:180" id="HbQ-Ef-QBp"/>
683
+                                    <constraint firstItem="ZLk-gf-Jzh" firstAttribute="top" secondItem="edT-EA-xhZ" secondAttribute="top" id="NSS-yv-eAq"/>
684
+                                    <constraint firstItem="itC-HJ-ZaT" firstAttribute="top" secondItem="edT-EA-xhZ" secondAttribute="top" id="fRA-ze-0tQ"/>
685
+                                    <constraint firstAttribute="height" constant="77" id="q4w-sh-fN4"/>
686
+                                    <constraint firstItem="W6V-MR-s2s" firstAttribute="centerX" secondItem="edT-EA-xhZ" secondAttribute="centerX" multiplier="138:180" id="tOg-mT-rNp"/>
655 687
                                 </constraints>
656 688
                             </view>
657 689
                         </subviews>
658 690
                         <gestureRecognizers/>
659 691
                         <constraints>
660
-                            <constraint firstItem="xUW-ue-yp5" firstAttribute="leading" secondItem="C6P-7J-fWs" secondAttribute="leading" id="Afy-jR-Jec"/>
661
-                            <constraint firstItem="C6P-7J-fWs" firstAttribute="bottom" secondItem="xUW-ue-yp5" secondAttribute="bottom" constant="127" id="hco-RD-Kle"/>
662
-                            <constraint firstItem="C6P-7J-fWs" firstAttribute="trailing" secondItem="xUW-ue-yp5" secondAttribute="trailing" id="lAd-Wf-RcE"/>
692
+                            <constraint firstItem="edT-EA-xhZ" firstAttribute="trailing" secondItem="C6P-7J-fWs" secondAttribute="trailing" id="6h4-ug-H2a"/>
693
+                            <constraint firstItem="edT-EA-xhZ" firstAttribute="leading" secondItem="C6P-7J-fWs" secondAttribute="leading" id="RS3-mc-Bi6"/>
694
+                            <constraint firstItem="C6P-7J-fWs" firstAttribute="bottom" secondItem="edT-EA-xhZ" secondAttribute="bottom" constant="127" id="iF3-AG-M9e"/>
663 695
                         </constraints>
664 696
                         <viewLayoutGuide key="safeArea" id="C6P-7J-fWs"/>
665 697
                     </view>
666 698
                     <connections>
667
-                        <outlet property="shareView" destination="xUW-ue-yp5" id="I5g-Zk-9uW"/>
699
+                        <outlet property="shareView" destination="edT-EA-xhZ" id="DNu-Ue-V2y"/>
668 700
                     </connections>
669 701
                 </viewController>
670 702
                 <placeholder placeholderIdentifier="IBFirstResponder" id="9LO-35-FRH" userLabel="First Responder" sceneMemberID="firstResponder"/>
671 703
             </objects>
672
-            <point key="canvasLocation" x="-513" y="1287"/>
704
+            <point key="canvasLocation" x="-73" y="469"/>
673 705
         </scene>
674 706
         <!--PhotoPreviewViewController-->
675 707
         <scene sceneID="yhk-2u-fiu">
@@ -779,20 +811,21 @@
779 811
     <resources>
780 812
         <image name="BTN-comment" width="138" height="138"/>
781 813
         <image name="BTN-download" width="96" height="96"/>
814
+        <image name="BTN-enterGroup" width="114" height="60"/>
782 815
         <image name="BTN-rotate" width="96" height="96"/>
816
+        <image name="BTN-send" width="608" height="304"/>
783 817
         <image name="BTN-share" width="138" height="138"/>
784 818
         <image name="BTN-thumbup" width="192" height="192"/>
785 819
         <image name="defaultAvatar" width="240" height="240"/>
786 820
         <image name="icon-comment" width="36" height="36"/>
821
+        <image name="icon-purchase-watermark" width="96" height="96"/>
787 822
         <image name="icon-thumbup" width="36" height="36"/>
788 823
         <image name="icon-time" width="36" height="36"/>
789 824
         <image name="list-arrow" width="24" height="36"/>
790 825
         <image name="navigation-back" width="36" height="72"/>
791
-        <image name="分享-QQ" width="162" height="162"/>
792
-        <image name="分享-微信好友" width="162" height="162"/>
793
-        <image name="分享-微博" width="162" height="162"/>
794
-        <image name="分享-朋友圈" width="162" height="162"/>
795
-        <image name="购买-去水印" width="96" height="96"/>
796
-        <image name="进入群" width="114" height="60"/>
826
+        <image name="share-QQ" width="162" height="162"/>
827
+        <image name="share-weibo" width="162" height="162"/>
828
+        <image name="share-wx" width="162" height="162"/>
829
+        <image name="share-wxCircle" width="162" height="162"/>
797 830
     </resources>
798 831
 </document>

+ 2 - 2
PaiAi/Paiai_iOS/App/PhotoDetail/PhotoDetailCoordinator.swift

@@ -14,7 +14,7 @@ final class PhotoDetailCoordinator: Coordinator {
14 14
     let photoDetailViewController: PhotoDetailViewController
15 15
     let shareListViewModel: PhotoDetailListViewModel
16 16
     
17
-    fileprivate var coordinators = [String: Coordinator]()
17
+    fileprivate var coordinators = [CoordinatorKey: Coordinator]()
18 18
     
19 19
     init(_ photoDetailVC: PhotoDetailViewController,
20 20
          nav: UINavigationController,
@@ -42,7 +42,7 @@ extension PhotoDetailCoordinator: PhotoDetailViewModelDelegate {
42 42
         vc.viewModel = GroupViewModel(groupItem: item)
43 43
         let coordinator = GroupCoordinator(vc,
44 44
                                            navigationController: navigationController)
45
-        coordinators["group"] = coordinator
45
+        coordinators[.group] = coordinator
46 46
         
47 47
         navigationController.pushViewController(vc)
48 48
     }

+ 13 - 12
PaiAi/Paiai_iOS/App/PhotoDetail/PhotoDetailViewController.swift

@@ -44,6 +44,7 @@ final class PhotoDetailViewController: UIViewController {
44 44
     @IBOutlet weak var waterMarkImage: UIImageView!
45 45
     @IBOutlet weak var waterMarkLabel: UILabel!
46 46
     
47
+    @IBOutlet var keyboardGestureRcognizer: UITapGestureRecognizer!
47 48
     @IBOutlet weak var thumbupViewHeightConstraint: NSLayoutConstraint!
48 49
     @IBOutlet weak var commentEditYConstraint: NSLayoutConstraint!
49 50
     
@@ -56,6 +57,7 @@ final class PhotoDetailViewController: UIViewController {
56 57
     // MARK: view function
57 58
     override func viewDidLoad() {
58 59
         super.viewDidLoad()
60
+        title = "详情"
59 61
         binding()
60 62
         setup()
61 63
     }
@@ -80,19 +82,13 @@ final class PhotoDetailViewController: UIViewController {
80 82
     }
81 83
 }
82 84
 
83
-//MARK textField delegate
84
-extension PhotoDetailViewController: UIGestureRecognizerDelegate {
85
-    // MARK: textField
86
-
87
-    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
88
-        return commentTextField.isFirstResponder
89
-    }
90
-    
91
-}
92
-
93
-
94 85
 /// bind storyboard gesture action
95 86
 extension PhotoDetailViewController {
87
+    
88
+    @IBAction func recyclingKeyboard(_ sender: UITapGestureRecognizer) {
89
+        commentTextField.resignFirstResponder()
90
+    }
91
+    
96 92
     @IBAction func purchase(_ sender: UITapGestureRecognizer) {
97 93
         
98 94
     }
@@ -105,7 +101,7 @@ extension PhotoDetailViewController {
105 101
 /// bind storyboard button action
106 102
 extension PhotoDetailViewController {
107 103
     @IBAction func share() {
108
-        let ctl = UIStoryboard.photoDetail.instantiateController(ShareController.self)
104
+        let ctl = UIStoryboard.photoDetail.instantiateController(ShareViewController.self)
109 105
         ctl.shareContent = "我使用拍爱分享了一张美图,你也快来试试吧"
110 106
         //        ctl.shareImgUrlThumb = datas[currentPhotoIndex].photo_thumbnail_url
111 107
         //        ctl.shareUrl = datas[currentPhotoIndex].photo_share_url
@@ -283,6 +279,9 @@ extension PhotoDetailViewController {
283 279
             .notification(UIResponder.keyboardWillShowNotification)
284 280
             .takeUntil(self.rx.deallocated)
285 281
             .subscribe { [unowned self] notification in
282
+                
283
+                self.keyboardGestureRcognizer.isEnabled = true
284
+                
286 285
                 guard let userInfo = notification.element?.userInfo,
287 286
                     let keyboardFrame = userInfo[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect,
288 287
                     let timeInterval = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval,
@@ -301,6 +300,8 @@ extension PhotoDetailViewController {
301 300
             .notification(UIResponder.keyboardWillHideNotification)
302 301
             .takeUntil(self.rx.deallocated)
303 302
             .subscribe { [unowned self] notification in
303
+                self.keyboardGestureRcognizer.isEnabled = false
304
+                
304 305
                 guard let userInfo = notification.element?.userInfo,
305 306
                     let timeInterval = userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval,
306 307
                     let curve = userInfo[UIResponder.keyboardAnimationCurveUserInfoKey] as? Int

+ 12 - 12
PaiAi/Paiai_iOS/App/PhotoDetail/ShareController.swift

@@ -1,5 +1,5 @@
1 1
 //
2
-//  ShareController.swift
2
+//  ShareViewController.swift
3 3
 //  PaiAi
4 4
 //
5 5
 //  Created by zhengjianfei on 16/4/7.
@@ -10,24 +10,24 @@ import UIKit
10 10
 import PaiaiDataKit
11 11
 import PaiaiUIKit
12 12
 
13
-final class ShareController: UIViewController {
13
+final class ShareViewController: AlertViewController {
14 14
 
15
-    // MARK: Storyboard property
16 15
     @IBOutlet weak var shareView: UIView!
17
-
16
+    
17
+    override var animationView: UIView? {
18
+        return shareView
19
+    }
20
+    
21
+    override var style: AlertViewController.Style {
22
+        return .actionSheet
23
+    }
24
+    
18 25
    // MARK: parameter property
19 26
     var shareContent: String = ""
20 27
     var shareImg: UIImage?
21 28
     lazy var shareImgUrlThumb: String = ""
22 29
     lazy var shareUrl: String = ""
23
-//    let transitioning = FFTransitioning(alertStyle: .actionSheet)
24
-
25
-    required init?(coder aDecoder: NSCoder) {
26
-        super.init(coder: aDecoder)
27
-//        transitioningDelegate = transitioning
28
-    }
29
-
30
-    // MARK: view function
30
+    
31 31
     override func viewDidLoad() {
32 32
         super.viewDidLoad()
33 33
         let imageView = UIImageView()

+ 0 - 29
PaiAi/Paiai_iOS/App/PhotoDetail/ShareView.swift

@@ -1,29 +0,0 @@
1
-//
2
-//  ShareView.swift
3
-//  Paiai_iOS
4
-//
5
-//  Created by ffib on 2019/3/21.
6
-//  Copyright © 2019 yb. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-
11
-class ShareView: UIView {
12
-    
13
-}
14
-
15
-
16
-
17
-extension ShareView {
18
-    
19
-    func activateConstraints() {
20
-        
21
-    }
22
-    
23
-    func activateConstraintsShareView() {
24
-        guard let superView = superview else { return }
25
-        
26
-        self.translatesAutoresizingMaskIntoConstraints = false
27
-        
28
-    }
29
-}

Kodo/kodo - Gogs: Go Git Service

20 Commits (9b8d6f0f09b7d9b7f25ae07faef1447217d31300)

Autor SHA1 Mensagem Data
  Brightcells 768af5a2ae Add list_filter for UserInfo 9 anos atrás
  Brightcells 8a213207ea Add tour guide oauth 9 anos atrás
  Brightcells 7dd4575a8c Add select_for_update for UserInfo/OrderInfo/GroupPhotoOrderInfo 9 anos atrás
  Brightcells 4fdd237863 add api price_fix 9 anos atrás
  Brightcells c7071ae7f1 wx_uid to openid 9 anos atrás
  Brightcells 57e79f38df fix bug: Duplicate entry 'xxx' for key 'user_id' 9 anos atrás
  Brightcells 3af14d4a96 fix bug: Duplicate entry 'xxx' for key 'account_userinfo_unionid_3c1f5d4e4e1b84a9_uniq 9 anos atrás
  Brightcells d0affd4b01 add lensman_oauth page 9 anos atrás
  Brightcells 92da943e9e check wx_uid for api wx_balance_withdraw_api 9 anos atrás
  Brightcells 6d6c8485ce bind LensmanInfo and UserInfo 9 anos atrás
  Brightcells afcdf74a49 add api group_data_api 9 anos atrás
  Brightcells 63eaee0951 modify guest_login_api 9 anos atrás
  Brightcells 269576f8b9 add guest user 9 anos atrás
  Brightcells fabef63211 set line_length=200 for isort 9 anos atrás
  Brightcells f72ccb1875 isort import 9 anos atrás
  Brightcells 2fb52216da Fix Bug: wx authorize doesn't store wx_uid 10 anos atrás
  Brightcells 6e77deb909 https://pypi.python.org/pypi/django-curtail-uuid 10 anos atrás
  Brightcells 3454610bb7 add api of user signup/login 10 anos atrás
  Brightcells 434468279f add api of lesman login & update other api 10 anos atrás
  Brightcells 4defb80fdc gogs first init 10 anos atrás