Browse Source

Add class SwiftyAvatar

Marino Faggiana 8 years ago
parent
commit
eade815cdc

+ 52 - 0
Libraries external/SwiftyAvatar/SwiftyAvatar.swift

@@ -0,0 +1,52 @@
+//
+//  SwiftyAvatar.swift
+//  SwiftyAvatar
+//
+//  Created by Dimitrios Kalaitzidis on 04/08/16.
+//  Copyright © 2016 Dimitrios Kalaitzidis. All rights reserved.
+//
+
+import UIKit
+
+@IBDesignable class SwiftyAvatar: UIImageView {
+    
+    @IBInspectable var roundness: CGFloat = 2 {
+        didSet{
+            layoutSubviews()
+        }
+    }
+    
+    @IBInspectable var borderWidth: CGFloat = 5 {
+        didSet{
+            layoutSubviews()
+        }
+    }
+    
+    @IBInspectable var borderColor: UIColor = UIColor.blue {
+        didSet{
+            layoutSubviews()
+        }
+    }
+    
+    @IBInspectable var background: UIColor = UIColor.clear {
+        didSet{
+            layoutSubviews()
+        }
+    }
+    
+    override func layoutSubviews() {
+        super.layoutSubviews()
+        
+        layer.cornerRadius = bounds.width / roundness
+        layer.borderWidth = borderWidth
+        layer.borderColor = borderColor.cgColor
+        layer.backgroundColor = background.cgColor
+        clipsToBounds = true
+        
+        let path = UIBezierPath(roundedRect: bounds.insetBy(dx: 0.5, dy: 0.5), cornerRadius: bounds.width / roundness)
+        let mask = CAShapeLayer()
+        
+        mask.path = path.cgPath
+        layer.mask = mask
+    }
+}

+ 12 - 0
Nextcloud.xcodeproj/project.pbxproj

@@ -243,6 +243,7 @@
 		F75037511DBFA91A008FB480 /* NSLayoutConstraint+PureLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = F75037481DBFA91A008FB480 /* NSLayoutConstraint+PureLayout.m */; };
 		F75797AE1E81356C00187A1B /* CTAssetsPicker.strings in Resources */ = {isa = PBXBuildFile; fileRef = F75797AC1E81356C00187A1B /* CTAssetsPicker.strings */; };
 		F75ADF451DC75FFE008A7347 /* CCLogin.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F75ADF441DC75FFE008A7347 /* CCLogin.storyboard */; };
+		F75AE3C71E9D12900088BB09 /* SwiftyAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75AE3C61E9D12900088BB09 /* SwiftyAvatar.swift */; };
 		F75EDFAC1E8C106900E6F369 /* FirebaseAnalytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F75EDFA61E8C106900E6F369 /* FirebaseAnalytics.framework */; };
 		F75EDFAD1E8C106900E6F369 /* FirebaseCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F75EDFA71E8C106900E6F369 /* FirebaseCore.framework */; };
 		F75EDFAE1E8C106900E6F369 /* FirebaseInstanceID.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F75EDFA81E8C106900E6F369 /* FirebaseInstanceID.framework */; };
@@ -1355,6 +1356,7 @@
 		F75797B51E81364700187A1B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/CTAssetsPicker.strings; sourceTree = "<group>"; };
 		F75797B71E81364C00187A1B /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/CTAssetsPicker.strings"; sourceTree = "<group>"; };
 		F75ADF441DC75FFE008A7347 /* CCLogin.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CCLogin.storyboard; sourceTree = "<group>"; };
+		F75AE3C61E9D12900088BB09 /* SwiftyAvatar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftyAvatar.swift; sourceTree = "<group>"; };
 		F75CDBF51DF063AD00116AD0 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; name = .gitignore; path = ../.gitignore; sourceTree = "<group>"; };
 		F75EDFA51E8C106900E6F369 /* Firebase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Firebase.h; sourceTree = "<group>"; };
 		F75EDFA61E8C106900E6F369 /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseAnalytics.framework; sourceTree = "<group>"; };
@@ -1813,6 +1815,7 @@
 				F70F0C4F1C8892C5008DAB36 /* REMenu */,
 				F70F05321C889184008DAB36 /* RNCryptor */,
 				F70F0F921C889487008DAB36 /* SSZipArchive */,
+				F75AE3C51E9D12900088BB09 /* SwiftyAvatar */,
 				F7676A601D5CB1B900DF734C /* TWMessageBarManager */,
 				F73CCE271DC13798007E38D8 /* UICKeyChainStore */,
 				F70F05561C889184008DAB36 /* UIImage+animatedGIF */,
@@ -2769,6 +2772,14 @@
 			path = openssl;
 			sourceTree = "<group>";
 		};
+		F75AE3C51E9D12900088BB09 /* SwiftyAvatar */ = {
+			isa = PBXGroup;
+			children = (
+				F75AE3C61E9D12900088BB09 /* SwiftyAvatar.swift */,
+			);
+			path = SwiftyAvatar;
+			sourceTree = "<group>";
+		};
 		F75EDFA41E8C106900E6F369 /* Analytics */ = {
 			isa = PBXGroup;
 			children = (
@@ -4156,6 +4167,7 @@
 				F77B0E231D118A16002130FE /* CCSharePermissionOC.m in Sources */,
 				F77B0E241D118A16002130FE /* HRColorCursor.m in Sources */,
 				F708CF851E56E8CC00271D8B /* TableShare+CoreDataClass.m in Sources */,
+				F75AE3C71E9D12900088BB09 /* SwiftyAvatar.swift in Sources */,
 				F708CF9A1E56E8CC00271D8B /* TableAccount+CoreDataProperties.m in Sources */,
 				F77B0E261D118A16002130FE /* ZSSTextView.m in Sources */,
 				F7253FCA1E38BAF20084135B /* JSAlertView.m in Sources */,

+ 10 - 2
iOSClient/Main/Main.storyboard

@@ -131,9 +131,17 @@
                                 <color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="avatar" translatesAutoresizingMaskIntoConstraints="NO" id="DWx-1W-vs0">
+                            <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="avatar" translatesAutoresizingMaskIntoConstraints="NO" id="DWx-1W-vs0" customClass="SwiftyAvatar" customModule="Nextcloud" customModuleProvider="target">
                                 <rect key="frame" x="16" y="28" width="50" height="50"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES"/>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                        <real key="value" value="1"/>
+                                    </userDefinedRuntimeAttribute>
+                                    <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
+                                        <color key="value" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
                             </imageView>
                         </subviews>
                         <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
@@ -164,7 +172,7 @@
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="D6O-WR-IEL" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="9212" y="1218"/>
+            <point key="canvasLocation" x="9212" y="1217.5412293853074"/>
         </scene>
         <!--Offline Container-->
         <scene sceneID="AYB-62-j4s">