marinofaggiana 3 жил өмнө
parent
commit
e6694b3433

+ 1 - 1
iOSClient/Viewer/NCViewerMedia/NCPlayer/NCPlayerToolBar.swift

@@ -153,7 +153,7 @@ class NCPlayerToolBar: UIView {
         
         if !self.isHidden { return }
         if let detailView = detailView {
-            if detailView.isShow() { return }
+            //if detailView.isShow() { return }
         }
         
         updateToolBar()

+ 0 - 151
iOSClient/Viewer/NCViewerMedia/NCViewerMedia.storyboard

@@ -96,152 +96,6 @@
                                         <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                         <nil key="highlightedColor"/>
                                     </label>
-                                    <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P8R-4f-zAl" customClass="NCViewerMediaDetailView" customModule="Nextcloud" customModuleProvider="target">
-                                        <rect key="frame" x="0.0" y="336" width="414" height="352"/>
-                                        <subviews>
-                                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HRq-3M-yeb">
-                                                <rect key="frame" x="15" y="20" width="384" height="1"/>
-                                                <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="1" id="X4S-cr-F2P"/>
-                                                </constraints>
-                                            </view>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="size" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WXS-Lw-DkI">
-                                                <rect key="frame" x="15" y="36" width="80" height="16"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="width" constant="80" id="DLa-7b-rDS"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="size value" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XLb-0a-du9">
-                                                <rect key="frame" x="105" y="36" width="294" height="16"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="date" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Son-CZ-zFa">
-                                                <rect key="frame" x="15" y="62" width="80" height="16"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="width" constant="80" id="e83-SZ-3FA"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="date value" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hBd-KD-Jq5">
-                                                <rect key="frame" x="105" y="62" width="294" height="16"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="dim" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uaE-Lv-t0Q">
-                                                <rect key="frame" x="15" y="88" width="80" height="16"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="width" constant="80" id="iwq-Fq-8U0"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="dim value" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="n1C-OB-gq2">
-                                                <rect key="frame" x="105" y="88" width="294" height="16"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="Typ-A8-XIO">
-                                                <rect key="frame" x="15" y="150" width="384" height="174"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="174" id="VRv-eR-bwo"/>
-                                                </constraints>
-                                            </mapView>
-                                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="oov-9f-Oeu">
-                                                <rect key="frame" x="15" y="324" width="384" height="28"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <state key="normal" title="location"/>
-                                                <connections>
-                                                    <action selector="touchLocation:" destination="P8R-4f-zAl" eventType="touchUpInside" id="Z9s-pM-WsS"/>
-                                                </connections>
-                                            </button>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lens" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uYI-ic-d8g">
-                                                <rect key="frame" x="15" y="114" width="80" height="16"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="width" constant="80" id="egy-z4-Im6"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="lens value" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ix8-uQ-chU">
-                                                <rect key="frame" x="105" y="114" width="294" height="16"/>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="message" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="03V-nM-JHv">
-                                                <rect key="frame" x="15" y="135" width="384" height="31"/>
-                                                <constraints>
-                                                    <constraint firstAttribute="height" constant="31" id="8Ex-vg-76t"/>
-                                                </constraints>
-                                                <fontDescription key="fontDescription" type="system" pointSize="13"/>
-                                                <color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                                <nil key="highlightedColor"/>
-                                            </label>
-                                        </subviews>
-                                        <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
-                                        <constraints>
-                                            <constraint firstItem="WXS-Lw-DkI" firstAttribute="top" secondItem="HRq-3M-yeb" secondAttribute="bottom" constant="15" id="2RK-lk-nQe"/>
-                                            <constraint firstItem="uaE-Lv-t0Q" firstAttribute="top" secondItem="Son-CZ-zFa" secondAttribute="bottom" constant="10" id="3jD-4U-zwi"/>
-                                            <constraint firstItem="XLb-0a-du9" firstAttribute="centerY" secondItem="WXS-Lw-DkI" secondAttribute="centerY" id="6k5-Ur-AKZ"/>
-                                            <constraint firstAttribute="trailing" secondItem="n1C-OB-gq2" secondAttribute="trailing" constant="15" id="6o9-lb-LZc"/>
-                                            <constraint firstItem="03V-nM-JHv" firstAttribute="top" secondItem="uYI-ic-d8g" secondAttribute="bottom" constant="5" id="7Uh-9y-EY1"/>
-                                            <constraint firstAttribute="trailing" secondItem="HRq-3M-yeb" secondAttribute="trailing" constant="15" id="DIq-e4-T4P"/>
-                                            <constraint firstItem="XLb-0a-du9" firstAttribute="leading" secondItem="WXS-Lw-DkI" secondAttribute="trailing" constant="10" id="Iqg-lN-NpB"/>
-                                            <constraint firstItem="n1C-OB-gq2" firstAttribute="centerY" secondItem="uaE-Lv-t0Q" secondAttribute="centerY" id="KMX-7y-YXP"/>
-                                            <constraint firstItem="uYI-ic-d8g" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="MTM-eQ-CXC"/>
-                                            <constraint firstItem="oov-9f-Oeu" firstAttribute="top" secondItem="Typ-A8-XIO" secondAttribute="bottom" id="MUo-UC-1d4"/>
-                                            <constraint firstItem="ix8-uQ-chU" firstAttribute="centerY" secondItem="uYI-ic-d8g" secondAttribute="centerY" id="Oae-3R-C5Z"/>
-                                            <constraint firstAttribute="trailing" secondItem="ix8-uQ-chU" secondAttribute="trailing" constant="15" id="TIp-le-wVn"/>
-                                            <constraint firstItem="hBd-KD-Jq5" firstAttribute="centerY" secondItem="Son-CZ-zFa" secondAttribute="centerY" id="Tez-na-gqC"/>
-                                            <constraint firstItem="HRq-3M-yeb" firstAttribute="top" secondItem="P8R-4f-zAl" secondAttribute="top" constant="20" id="UF1-fO-9hX"/>
-                                            <constraint firstItem="03V-nM-JHv" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="Wkx-6P-u9F"/>
-                                            <constraint firstAttribute="trailing" secondItem="03V-nM-JHv" secondAttribute="trailing" constant="15" id="YYB-CF-RWS"/>
-                                            <constraint firstAttribute="bottom" secondItem="oov-9f-Oeu" secondAttribute="bottom" id="YuK-2v-kzk"/>
-                                            <constraint firstItem="hBd-KD-Jq5" firstAttribute="leading" secondItem="Son-CZ-zFa" secondAttribute="trailing" constant="10" id="YuO-13-KTh"/>
-                                            <constraint firstItem="WXS-Lw-DkI" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="bRd-bi-Imh"/>
-                                            <constraint firstItem="uYI-ic-d8g" firstAttribute="top" secondItem="uaE-Lv-t0Q" secondAttribute="bottom" constant="10" id="bkM-Ic-ZoE"/>
-                                            <constraint firstItem="Typ-A8-XIO" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="jre-DM-hm3"/>
-                                            <constraint firstItem="oov-9f-Oeu" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="lXY-IM-uQB"/>
-                                            <constraint firstAttribute="trailing" secondItem="oov-9f-Oeu" secondAttribute="trailing" constant="15" id="mpQ-4V-Yfc"/>
-                                            <constraint firstAttribute="trailing" secondItem="Typ-A8-XIO" secondAttribute="trailing" constant="15" id="nAm-fh-5Px"/>
-                                            <constraint firstItem="Typ-A8-XIO" firstAttribute="top" secondItem="ix8-uQ-chU" secondAttribute="bottom" constant="20" id="o5C-6S-80Q"/>
-                                            <constraint firstItem="HRq-3M-yeb" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="oJB-7U-UpU"/>
-                                            <constraint firstAttribute="trailing" secondItem="XLb-0a-du9" secondAttribute="trailing" constant="15" id="p7C-ox-HFw"/>
-                                            <constraint firstAttribute="trailing" secondItem="hBd-KD-Jq5" secondAttribute="trailing" constant="15" id="sKA-YA-3Uc"/>
-                                            <constraint firstItem="uaE-Lv-t0Q" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="tnj-dz-2rk"/>
-                                            <constraint firstItem="ix8-uQ-chU" firstAttribute="leading" secondItem="uYI-ic-d8g" secondAttribute="trailing" constant="10" id="vPD-6e-zeT"/>
-                                            <constraint firstItem="Son-CZ-zFa" firstAttribute="leading" secondItem="P8R-4f-zAl" secondAttribute="leading" constant="15" id="vsg-gX-rNv"/>
-                                            <constraint firstItem="n1C-OB-gq2" firstAttribute="leading" secondItem="uaE-Lv-t0Q" secondAttribute="trailing" constant="10" id="yAH-Dt-LC5"/>
-                                            <constraint firstItem="Son-CZ-zFa" firstAttribute="top" secondItem="WXS-Lw-DkI" secondAttribute="bottom" constant="10" id="z9W-ZR-cUN"/>
-                                        </constraints>
-                                        <connections>
-                                            <outlet property="dateLabel" destination="Son-CZ-zFa" id="0Wi-XW-0hw"/>
-                                            <outlet property="dateValue" destination="hBd-KD-Jq5" id="ple-nX-OpH"/>
-                                            <outlet property="dimLabel" destination="uaE-Lv-t0Q" id="MkZ-ko-UrJ"/>
-                                            <outlet property="dimValue" destination="n1C-OB-gq2" id="Ln4-gV-wXg"/>
-                                            <outlet property="lensModelLabel" destination="uYI-ic-d8g" id="DUn-uJ-sVj"/>
-                                            <outlet property="lensModelValue" destination="ix8-uQ-chU" id="GNF-8F-10P"/>
-                                            <outlet property="locationButton" destination="oov-9f-Oeu" id="cGg-Gb-m5S"/>
-                                            <outlet property="mapHeightConstraint" destination="VRv-eR-bwo" id="jXn-vm-aJk"/>
-                                            <outlet property="mapView" destination="Typ-A8-XIO" id="XCg-a6-NUq"/>
-                                            <outlet property="messageLabel" destination="03V-nM-JHv" id="dpK-Iy-LCD"/>
-                                            <outlet property="separator" destination="HRq-3M-yeb" id="ENP-xc-AWZ"/>
-                                            <outlet property="sizeLabel" destination="WXS-Lw-DkI" id="JG0-G0-oHg"/>
-                                            <outlet property="sizeValue" destination="XLb-0a-du9" id="9jm-Ku-sgt"/>
-                                        </connections>
-                                    </view>
                                     <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sBp-t2-eFh" customClass="NCPlayerToolBar" customModule="Nextcloud" customModuleProvider="target">
                                         <rect key="frame" x="25" y="626" width="364" height="100"/>
                                         <subviews>
@@ -373,17 +227,12 @@
                             <constraint firstItem="Yo6-7W-moG" firstAttribute="trailing" secondItem="sBp-t2-eFh" secondAttribute="trailing" constant="25" id="TCr-e0-gnG"/>
                             <constraint firstItem="2AU-85-K8y" firstAttribute="leading" secondItem="Yo6-7W-moG" secondAttribute="leading" constant="10" id="X10-OG-EKg"/>
                             <constraint firstItem="Yo6-7W-moG" firstAttribute="top" secondItem="2AU-85-K8y" secondAttribute="top" constant="-10" id="avO-83-uMQ"/>
-                            <constraint firstItem="Yo6-7W-moG" firstAttribute="bottom" secondItem="P8R-4f-zAl" secondAttribute="top" constant="400" id="bor-cg-Alz"/>
-                            <constraint firstItem="P8R-4f-zAl" firstAttribute="leading" secondItem="Yo6-7W-moG" secondAttribute="leading" id="dly-i5-fPW"/>
                             <constraint firstItem="CdQ-LC-Trx" firstAttribute="leading" secondItem="fIE-H6-KKc" secondAttribute="leading" id="g8C-2m-KkX"/>
                             <constraint firstItem="CdQ-LC-Trx" firstAttribute="top" secondItem="fIE-H6-KKc" secondAttribute="top" id="hcQ-lB-JwU"/>
                             <constraint firstItem="sBp-t2-eFh" firstAttribute="leading" secondItem="Yo6-7W-moG" secondAttribute="leading" constant="25" id="hwP-QY-nRI"/>
-                            <constraint firstItem="Yo6-7W-moG" firstAttribute="trailing" secondItem="P8R-4f-zAl" secondAttribute="trailing" id="jf2-Nv-gFi"/>
                         </constraints>
                     </view>
                     <connections>
-                        <outlet property="detailView" destination="P8R-4f-zAl" id="xFW-qq-Cdi"/>
-                        <outlet property="detailViewConstraint" destination="bor-cg-Alz" id="Hwu-z8-2SS"/>
                         <outlet property="imageVideoContainer" destination="kPV-JM-UnM" id="2pA-VW-FuK"/>
                         <outlet property="imageViewBottomConstraint" destination="vEd-X2-yGs" id="wp3-67-aZ2"/>
                         <outlet property="imageViewTopConstraint" destination="tdo-XY-uqv" id="AM2-tz-fSt"/>

+ 1 - 1
iOSClient/Viewer/NCViewerMedia/NCViewerMedia.swift

@@ -180,7 +180,7 @@ class NCViewerMedia: UIViewController {
         }
         
         // Detail Text Color
-        currentViewController.detailView.textColor(textColor)
+        currentViewController.detailView?.textColor(textColor)
     }
     
     //MARK: - NotificationCenter

+ 3 - 20
iOSClient/Viewer/NCViewerMedia/NCViewerMediaDetailView.swift

@@ -37,7 +37,6 @@ class NCViewerMediaDetailView: UIView {
     @IBOutlet weak var lensModelLabel: UILabel!
     @IBOutlet weak var lensModelValue: UILabel!
     @IBOutlet weak var messageLabel: UILabel!
-    @IBOutlet weak var mapHeightConstraint: NSLayoutConstraint!
     @IBOutlet weak var mapView: MKMapView!
     @IBOutlet weak var locationButton: UIButton!
 
@@ -48,7 +47,6 @@ class NCViewerMediaDetailView: UIView {
     var location: String?
     var date: NSDate?
     var lensModel: String?
-    var heightMap: CGFloat = 0
     var size: Int64 = 0
     var image: UIImage?
     
@@ -70,8 +68,6 @@ class NCViewerMediaDetailView: UIView {
     
     deinit {
         print("deinit NCViewerMediaDetailView")
-        
-        mapView.delegate = nil
     }
     
     func textColor(_ textColor: UIColor?) {
@@ -84,25 +80,16 @@ class NCViewerMediaDetailView: UIView {
     
     func show(textColor: UIColor?) {
         self.textColor(textColor)
-        isHidden = false
-    }
-    
-    func hide() {
-        isHidden = true
-    }
-    
-    func isShow() -> Bool {
-        return !isHidden
     }
     
     //MARK: - EXIF
     
-    func update(metadata: tableMetadata, image: UIImage?, heightMap:  CGFloat) {
+    func update(metadata: tableMetadata, image: UIImage?, textColor: UIColor?) {
                     
         self.metadata = metadata
-        self.heightMap = heightMap
         self.image = image
         self.size = metadata.size
+        self.textColor(textColor)
         
         if metadata.classFile == NCCommunicationCommon.typeClassFile.image.rawValue {
             CCUtility.setExif(metadata) { (latitude, longitude, location, date, lensModel) in
@@ -118,6 +105,7 @@ class NCViewerMediaDetailView: UIView {
         } else {
             self.updateContent()
         }
+        
     }
     
     //MARK: - Map
@@ -180,11 +168,6 @@ class NCViewerMediaDetailView: UIView {
             mapView.addAnnotation(annotation)
             mapView.setRegion(MKCoordinateRegion(center: annotation.coordinate, latitudinalMeters: 500, longitudinalMeters: 500), animated: false)
             locationButton.setTitle(location, for: .normal)
-            mapHeightConstraint.constant = self.heightMap
-            
-        } else {
-            
-            mapHeightConstraint.constant = 0
         }
     }
     

+ 5 - 8
iOSClient/Viewer/NCViewerMedia/NCViewerMediaDetailView.xib

@@ -92,13 +92,10 @@
                     <nil key="highlightedColor"/>
                 </label>
                 <mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="snG-1k-HmS">
-                    <rect key="frame" x="15" y="175" width="384" height="174"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="174" id="DtD-XU-pOq"/>
-                    </constraints>
+                    <rect key="frame" x="15" y="160" width="384" height="548"/>
                 </mapView>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="drq-Kr-R07">
-                    <rect key="frame" x="15" y="349" width="384" height="28"/>
+                    <rect key="frame" x="15" y="708" width="384" height="28"/>
                     <fontDescription key="fontDescription" type="system" pointSize="13"/>
                     <state key="normal" title="location"/>
                     <connections>
@@ -112,9 +109,10 @@
                 <constraint firstItem="dlG-kQ-oGT" firstAttribute="top" secondItem="EcH-At-xUC" secondAttribute="bottom" constant="15" id="0Of-Q9-Hl2"/>
                 <constraint firstItem="Hmr-2m-q93" firstAttribute="centerY" secondItem="mCm-dF-HVt" secondAttribute="centerY" id="1MY-1H-KaA"/>
                 <constraint firstItem="EcH-At-xUC" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="4K4-g2-pH5"/>
+                <constraint firstItem="drq-Kr-R07" firstAttribute="top" secondItem="snG-1k-HmS" secondAttribute="bottom" id="4vU-DF-2YK"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="drq-Kr-R07" secondAttribute="trailing" constant="15" id="52Z-Ke-8Xi"/>
                 <constraint firstItem="khY-FW-U5G" firstAttribute="leading" secondItem="MX3-5v-hDP" secondAttribute="trailing" constant="10" id="7q8-EE-Hyk"/>
-                <constraint firstItem="snG-1k-HmS" firstAttribute="top" secondItem="mCm-dF-HVt" secondAttribute="bottom" constant="30" id="8ax-hx-czr"/>
+                <constraint firstItem="snG-1k-HmS" firstAttribute="top" secondItem="mCm-dF-HVt" secondAttribute="bottom" constant="15" id="8ax-hx-czr"/>
                 <constraint firstItem="vfh-7h-knB" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="16" id="BZe-Rb-6ct"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="hIh-Bh-Vi7" secondAttribute="trailing" constant="15" id="IEl-eR-0h6"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="snG-1k-HmS" secondAttribute="trailing" constant="15" id="KMR-fn-x76"/>
@@ -131,10 +129,10 @@
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="CVj-Qv-laX" secondAttribute="trailing" constant="15" id="dhJ-G2-IIA"/>
                 <constraint firstItem="hIh-Bh-Vi7" firstAttribute="top" secondItem="mCm-dF-HVt" secondAttribute="bottom" constant="15" id="eRW-8O-CRi"/>
                 <constraint firstItem="drq-Kr-R07" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="f11-b0-Rnc"/>
-                <constraint firstItem="drq-Kr-R07" firstAttribute="top" secondItem="snG-1k-HmS" secondAttribute="bottom" id="g0B-P8-rMR"/>
                 <constraint firstItem="mCm-dF-HVt" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="15" id="hzW-Wz-ReU"/>
                 <constraint firstItem="khY-FW-U5G" firstAttribute="centerY" secondItem="MX3-5v-hDP" secondAttribute="centerY" id="lNa-IL-htI"/>
                 <constraint firstItem="cGN-I7-3e4" firstAttribute="centerY" secondItem="dlG-kQ-oGT" secondAttribute="centerY" id="nUy-Dh-aiP"/>
+                <constraint firstItem="vUN-kp-3ea" firstAttribute="bottom" secondItem="drq-Kr-R07" secondAttribute="bottom" id="pEo-vl-dAo"/>
                 <constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="vfh-7h-knB" secondAttribute="trailing" constant="15" id="q3I-og-2ys"/>
                 <constraint firstItem="CVj-Qv-laX" firstAttribute="centerY" secondItem="EcH-At-xUC" secondAttribute="centerY" id="r7D-zh-hzt"/>
                 <constraint firstItem="mCm-dF-HVt" firstAttribute="top" secondItem="MX3-5v-hDP" secondAttribute="bottom" constant="15" id="rIJ-LG-DMc"/>
@@ -150,7 +148,6 @@
                 <outlet property="lensModelLabel" destination="mCm-dF-HVt" id="6IB-VE-uic"/>
                 <outlet property="lensModelValue" destination="Hmr-2m-q93" id="lYj-fL-sZ2"/>
                 <outlet property="locationButton" destination="drq-Kr-R07" id="as2-Tv-OtA"/>
-                <outlet property="mapHeightConstraint" destination="DtD-XU-pOq" id="DJq-dQ-W6e"/>
                 <outlet property="mapView" destination="snG-1k-HmS" id="vDK-1x-nQR"/>
                 <outlet property="messageLabel" destination="hIh-Bh-Vi7" id="uLd-IC-mNO"/>
                 <outlet property="separator" destination="vfh-7h-knB" id="BcM-QY-v4Z"/>

+ 52 - 45
iOSClient/Viewer/NCViewerMedia/NCViewerMediaZoom.swift

@@ -26,20 +26,19 @@ import NCCommunication
 
 class NCViewerMediaZoom: UIViewController {
     
-    @IBOutlet weak var detailViewConstraint: NSLayoutConstraint!
     @IBOutlet weak var imageViewTopConstraint: NSLayoutConstraint!
     @IBOutlet weak var imageViewBottomConstraint: NSLayoutConstraint!
-    
     @IBOutlet weak var scrollView: UIScrollView!
     @IBOutlet weak var imageVideoContainer: imageVideoContainerView!
     @IBOutlet weak var statusViewImage: UIImageView!
     @IBOutlet weak var statusLabel: UILabel!
-    @IBOutlet weak var detailView: NCViewerMediaDetailView!
     @IBOutlet weak var playerToolBar: NCPlayerToolBar!
     
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
     var viewerMedia: NCViewerMedia?
     var ncplayer: NCPlayer?
+    var detailView: NCViewerMediaDetailView?
+    var detailViewTopConstraint: NSLayoutConstraint?
     var image: UIImage?
     var metadata: tableMetadata = tableMetadata()
     var index: Int = 0
@@ -97,10 +96,7 @@ class NCViewerMediaZoom: UIViewController {
         }  else {
             statusViewImage.image = nil
             statusLabel.text = ""
-        }
-        
-        detailViewConstraint.constant = 0
-        detailView.hide()
+        }        
     }
     
     override func viewWillAppear(_ animated: Bool) {
@@ -163,12 +159,12 @@ class NCViewerMediaZoom: UIViewController {
             // back to the original size
             self.scrollView.zoom(to: CGRect(x: 0, y: 0, width: self.scrollView.bounds.width, height: self.scrollView.bounds.height), animated: false)
             self.view.layoutIfNeeded()
-            UIView.animate(withDuration: context.transitionDuration) {
+//            UIView.animate(withDuration: context.transitionDuration) {
                 // resize detail
-                if self.detailView.isShow() {
-                    self.openDetail()
-                }
-            }
+//                if let detailView = self.detailView, detailView.isShow() {
+//                    self.openDetail()
+//                }
+//            }
         }) { (_) in }
     }
     
@@ -186,7 +182,7 @@ class NCViewerMediaZoom: UIViewController {
 
     @objc func didDoubleTapWith(gestureRecognizer: UITapGestureRecognizer) {
         
-        if detailView.isShow() { return }
+        if detailView != nil { return }
         
         // NO ZOOM for Audio / Video
         if (metadata.classFile == NCCommunicationCommon.typeClassFile.video.rawValue || metadata.classFile == NCCommunicationCommon.typeClassFile.audio.rawValue) && !playerToolBar.isHidden {
@@ -219,16 +215,17 @@ class NCViewerMediaZoom: UIViewController {
             
             // gesture moving Up
             if velocity.y < 0 {
-                var heightMap = (view.bounds.height / 3)
-                if view.bounds.width < view.bounds.height {
-                    heightMap = (view.bounds.width / 3)
-                }
-                detailView.update(metadata: metadata, image: image, heightMap: heightMap)
+//                var heightMap = (view.bounds.height / 3)
+//                if view.bounds.width < view.bounds.height {
+//                    heightMap = (view.bounds.width / 3)
+//                }
+//                detailView.update(metadata: metadata, image: image, heightMap: heightMap)
             }
+            break
 
         case .ended:
             
-            if detailView.isShow() {
+            if self.detailView != nil {
                 self.imageViewTopConstraint.constant = -imageViewConstraint
                 self.imageViewBottomConstraint.constant = imageViewConstraint
             } else {
@@ -242,21 +239,21 @@ class NCViewerMediaZoom: UIViewController {
             imageViewBottomConstraint.constant = -(currentLocation.y - imageViewConstraint)
             
             // DISMISS VIEW
-            if detailView.isHidden && (currentLocation.y > 20) {
+            if detailView == nil && (currentLocation.y > 20) {
                 
                 viewerMedia?.navigationController?.popViewController(animated: true)
                 gestureRecognizer.state = .ended
             }
             
             // CLOSE DETAIL
-            if !detailView.isHidden && (currentLocation.y > 20) {
+            if detailView != nil && (currentLocation.y > 20) {
                                
                 self.closeDetail()
                 gestureRecognizer.state = .ended
             }
 
             // OPEN DETAIL
-            if detailView.isHidden && (currentLocation.y < -20) {
+            if detailView == nil && (currentLocation.y < -20) {
                        
                 self.openDetail()
                 gestureRecognizer.state = .ended
@@ -274,41 +271,51 @@ extension NCViewerMediaZoom {
     
     private func openDetail() {
         
-        self.detailView.show(textColor: self.viewerMedia?.textColor)
-        
-        if let image = imageVideoContainer.image {
-            let ratioW = imageVideoContainer.frame.width / image.size.width
-            let ratioH = imageVideoContainer.frame.height / image.size.height
-            let ratio = ratioW < ratioH ? ratioW : ratioH
-            let imageHeight = image.size.height * ratio
-            imageViewConstraint = self.detailView.frame.height - ((self.view.frame.height - imageHeight) / 2) + self.view.safeAreaInsets.bottom
-            if imageViewConstraint < 0 { imageViewConstraint = 0 }
-        }
-        
-        UIView.animate(withDuration: 0.3) {
-            self.imageViewTopConstraint.constant = -self.imageViewConstraint
-            self.imageViewBottomConstraint.constant = self.imageViewConstraint
-            self.detailViewConstraint.constant = self.detailView.frame.height
-            self.view.layoutIfNeeded()
-        } completion: { (_) in
+        if let detailView = Bundle.main.loadNibNamed("NCViewerMediaDetailView", owner: self, options: nil)?.first as? NCViewerMediaDetailView {
+            detailView.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height/2)
+            self.detailView = detailView
+            self.view.addSubview(detailView)
+            detailView.translatesAutoresizingMaskIntoConstraints = false
+            detailViewTopConstraint = detailView.topAnchor.constraint(equalTo: view.topAnchor, constant: 400)
+            detailViewTopConstraint?.isActive = true
+            detailView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0).isActive = true
+            detailView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0).isActive = true
+            detailView.heightAnchor.constraint(equalToConstant: self.view.frame.height/2).isActive = true
+            detailView.update(metadata: metadata, image: image, textColor: self.viewerMedia?.textColor)
+            
+            if let image = imageVideoContainer.image {
+                let ratioW = imageVideoContainer.frame.width / image.size.width
+                let ratioH = imageVideoContainer.frame.height / image.size.height
+                let ratio = ratioW < ratioH ? ratioW : ratioH
+                let imageHeight = image.size.height * ratio
+                imageViewConstraint = detailView.frame.height - ((self.view.frame.height - imageHeight) / 2) + self.view.safeAreaInsets.bottom
+                if imageViewConstraint < 0 { imageViewConstraint = 0 }
+            }
+            
+            UIView.animate(withDuration: 0.3) {
+                self.imageViewTopConstraint.constant = -self.imageViewConstraint
+                self.imageViewBottomConstraint.constant = self.imageViewConstraint
+                self.view.layoutIfNeeded()
+            } completion: { (_) in
+            }
+            
+            scrollView.pinchGestureRecognizer?.isEnabled = false
+            playerToolBar.hideToolBar()
         }
-        
-        scrollView.pinchGestureRecognizer?.isEnabled = false
-        
-        playerToolBar.hideToolBar()
     }
     
     private func closeDetail() {
         
-        self.detailView.hide()
+//        detailView?.hide()
         imageViewConstraint = 0
         
         UIView.animate(withDuration: 0.3) {
             self.imageViewTopConstraint.constant = 0
             self.imageViewBottomConstraint.constant = 0
-            self.detailViewConstraint.constant = 0
             self.view.layoutIfNeeded()
         } completion: { (_) in
+            self.detailView?.removeFromSuperview()
+            self.detailView = nil
         }
         
         scrollView.pinchGestureRecognizer?.isEnabled = true