Showing
5 changed files
with
153 additions
and
44 deletions
No preview for this file type
... | @@ -37,8 +37,8 @@ import UIKit | ... | @@ -37,8 +37,8 @@ import UIKit |
37 | public override func awakeFromNib() { | 37 | public override func awakeFromNib() { |
38 | super.awakeFromNib() | 38 | super.awakeFromNib() |
39 | 39 | ||
40 | - inboxView.layer.cornerRadius = 5.0 | 40 | +// inboxView.layer.cornerRadius = 5.0 |
41 | - inboxView.clipsToBounds = true | 41 | +// inboxView.clipsToBounds = true |
42 | 42 | ||
43 | newBadgeImage.image = UIImage(named: "new_icon_2", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | 43 | newBadgeImage.image = UIImage(named: "new_icon_2", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) |
44 | curvedBgImage.image = UIImage(named: "curved_bg_white_2", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) | 44 | curvedBgImage.image = UIImage(named: "curved_bg_white_2", in: MyEmptyClass.resourceBundle(), compatibleWith: nil) |
... | @@ -57,6 +57,26 @@ import UIKit | ... | @@ -57,6 +57,26 @@ import UIKit |
57 | //set the values for top,left,bottom,right margins | 57 | //set the values for top,left,bottom,right margins |
58 | let margins = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0) | 58 | let margins = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0) |
59 | contentView.frame = contentView.frame.inset(by: margins) | 59 | contentView.frame = contentView.frame.inset(by: margins) |
60 | + | ||
61 | + // Add different corner radius - Do it here, otherwise it won't be applied to all cells | ||
62 | + inboxView.roundCorners(topLeft: 20, topRight: 45, bottomLeft: 20, bottomRight: 0) | ||
63 | + | ||
64 | + // Delete extra borderLayers added | ||
65 | + for layer in (inboxView.layer.sublayers ?? []) { | ||
66 | + if(layer.name == "MFYItemBorderLayer"){ | ||
67 | + layer.removeFromSuperlayer() | ||
68 | + } | ||
69 | + } | ||
70 | + | ||
71 | + // Add borderLayer | ||
72 | + let borderLayer = CAShapeLayer() | ||
73 | + borderLayer.path = (inboxView.layer.mask! as! CAShapeLayer).path! // Reuse the Bezier path | ||
74 | + borderLayer.strokeColor = UIColor(red: 0.90, green: 0.90, blue: 0.90, alpha: 1.00).cgColor | ||
75 | + borderLayer.fillColor = UIColor.clear.cgColor | ||
76 | + borderLayer.lineWidth = 1 | ||
77 | + borderLayer.frame = inboxView.bounds | ||
78 | + borderLayer.name = "MFYItemBorderLayer" | ||
79 | + inboxView.layer.addSublayer(borderLayer) | ||
60 | } | 80 | } |
61 | 81 | ||
62 | 82 | ||
... | @@ -65,11 +85,11 @@ import UIKit | ... | @@ -65,11 +85,11 @@ import UIKit |
65 | self.postImageURL = campaign.logo_url ?? "" | 85 | self.postImageURL = campaign.logo_url ?? "" |
66 | 86 | ||
67 | campaignTitleLabel.text = campaign.title ?? "" | 87 | campaignTitleLabel.text = campaign.title ?? "" |
68 | - campaignTitleLabel.font = UIFont(name: "PFSquareSansPro-BoldItalic", size: 18) | 88 | + campaignTitleLabel.font = UIFont(name: "BTCosmo-Bold", size: 17) |
69 | subtitleLabel.text = campaign.subtitle ?? "" | 89 | subtitleLabel.text = campaign.subtitle ?? "" |
70 | - subtitleLabel.font = UIFont(name: "PFSquareSansPro-Regular", size: 16) | 90 | + subtitleLabel.font = UIFont(name: "PeridotPE-Regular", size: 15) |
71 | descriptionLabel.text = campaign.message ?? "" | 91 | descriptionLabel.text = campaign.message ?? "" |
72 | - descriptionLabel.font = UIFont(name: "PFSquareSansPro-Bold", size: 14) | 92 | + descriptionLabel.font = UIFont(name: "PeridotPE-SBold", size: 15) |
73 | 93 | ||
74 | if (campaign.is_new == true) { | 94 | if (campaign.is_new == true) { |
75 | newBadgeImage.isHidden = false | 95 | newBadgeImage.isHidden = false |
... | @@ -83,11 +103,11 @@ import UIKit | ... | @@ -83,11 +103,11 @@ import UIKit |
83 | self.postImageURL = ccms._imageUrl | 103 | self.postImageURL = ccms._imageUrl |
84 | 104 | ||
85 | campaignTitleLabel.text = ccms._title | 105 | campaignTitleLabel.text = ccms._title |
86 | - campaignTitleLabel.font = UIFont(name: "PFSquareSansPro-BoldItalic", size: 18) | 106 | + campaignTitleLabel.font = UIFont(name: "BTCosmo-Bold", size: 17) |
87 | subtitleLabel.text = ccms._subtitle | 107 | subtitleLabel.text = ccms._subtitle |
88 | - subtitleLabel.font = UIFont(name: "PFSquareSansPro-Regular", size: 16) | 108 | + subtitleLabel.font = UIFont(name: "PeridotPE-Regular", size: 15) |
89 | descriptionLabel.text = ccms._description | 109 | descriptionLabel.text = ccms._description |
90 | - descriptionLabel.font = UIFont(name: "PFSquareSansPro-Bold", size: 14) | 110 | + descriptionLabel.font = UIFont(name: "PeridotPE-SBold", size: 15) |
91 | 111 | ||
92 | newBadgeImage.isHidden = true | 112 | newBadgeImage.isHidden = true |
93 | } | 113 | } | ... | ... |
... | @@ -54,30 +54,30 @@ import SwiftEventBus | ... | @@ -54,30 +54,30 @@ import SwiftEventBus |
54 | // tableView.clipsToBounds = true | 54 | // tableView.clipsToBounds = true |
55 | // tableView.layer.cornerRadius = 30 | 55 | // tableView.layer.cornerRadius = 30 |
56 | // tableView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius | 56 | // tableView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius |
57 | - tableView.contentInset.top = 50 | 57 | + tableView.contentInset.top = 10 |
58 | 58 | ||
59 | // Add Top left corner radius | 59 | // Add Top left corner radius |
60 | // mainView.clipsToBounds = true | 60 | // mainView.clipsToBounds = true |
61 | // mainView.layer.cornerRadius = 30 | 61 | // mainView.layer.cornerRadius = 30 |
62 | // mainView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius | 62 | // mainView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius |
63 | - mainView.backgroundColor = UIColor(red: 0.22, green: 0.32, blue: 0.40, alpha: 1.00) | 63 | + mainView.backgroundColor = UIColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1.00) |
64 | 64 | ||
65 | - let image = UIImage(named: "top_border_shadow", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)! | 65 | +// let image = UIImage(named: "top_border_shadow", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)! |
66 | - var aspectR: CGFloat = 0.0 | 66 | +// var aspectR: CGFloat = 0.0 |
67 | - | 67 | +// |
68 | - aspectR = image.size.width/image.size.height | 68 | +// aspectR = image.size.width/image.size.height |
69 | - | 69 | +// |
70 | - topBorderShadow.translatesAutoresizingMaskIntoConstraints = false | 70 | +// topBorderShadow.translatesAutoresizingMaskIntoConstraints = false |
71 | - topBorderShadow.image = image | 71 | +// topBorderShadow.image = image |
72 | - topBorderShadow.contentMode = .scaleAspectFill | 72 | +// topBorderShadow.contentMode = .scaleAspectFill |
73 | - | 73 | +// |
74 | - NSLayoutConstraint.activate([ | 74 | +// NSLayoutConstraint.activate([ |
75 | - topBorderShadow.topAnchor.constraint(equalTo: mainView.topAnchor, constant: 0), | 75 | +// topBorderShadow.topAnchor.constraint(equalTo: mainView.topAnchor, constant: 0), |
76 | - topBorderShadow.leadingAnchor.constraint(equalTo: mainView.leadingAnchor, constant: 0), | 76 | +// topBorderShadow.leadingAnchor.constraint(equalTo: mainView.leadingAnchor, constant: 0), |
77 | - topBorderShadow.trailingAnchor.constraint(equalTo: mainView.trailingAnchor, constant: 0), | 77 | +// topBorderShadow.trailingAnchor.constraint(equalTo: mainView.trailingAnchor, constant: 0), |
78 | - topBorderShadow.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width), | 78 | +// topBorderShadow.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width), |
79 | - topBorderShadow.heightAnchor.constraint(equalTo: topBorderShadow.widthAnchor, multiplier: 1/aspectR) | 79 | +// topBorderShadow.heightAnchor.constraint(equalTo: topBorderShadow.widthAnchor, multiplier: 1/aspectR) |
80 | - ]) | 80 | +// ]) |
81 | 81 | ||
82 | } | 82 | } |
83 | 83 | ||
... | @@ -211,8 +211,8 @@ extension MFYViewController: UITableViewDelegate, UITableViewDataSource{ | ... | @@ -211,8 +211,8 @@ extension MFYViewController: UITableViewDelegate, UITableViewDataSource{ |
211 | view.backgroundColor = .clear | 211 | view.backgroundColor = .clear |
212 | 212 | ||
213 | let titleLabel = UILabel(frame: CGRect(x: 20, y: 5, width: view.frame.width - 20, height: 43)) | 213 | let titleLabel = UILabel(frame: CGRect(x: 20, y: 5, width: view.frame.width - 20, height: 43)) |
214 | - titleLabel.font = UIFont(name: "PFSquareSansPro-Bold", size: 21) | 214 | + titleLabel.font = UIFont(name: "BTCosmo-Bold", size: 15) |
215 | - titleLabel.textColor = UIColor(rgb: 0xF4F4F4) | 215 | + titleLabel.textColor = UIColor(rgb: 0x212121) |
216 | titleLabel.text = categories[section].name | 216 | titleLabel.text = categories[section].name |
217 | 217 | ||
218 | view.addSubview(titleLabel) | 218 | view.addSubview(titleLabel) | ... | ... |
... | @@ -245,30 +245,30 @@ | ... | @@ -245,30 +245,30 @@ |
245 | <rect key="frame" x="20" y="0.0" width="374" height="118.5"/> | 245 | <rect key="frame" x="20" y="0.0" width="374" height="118.5"/> |
246 | <subviews> | 246 | <subviews> |
247 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rO0-9o-lPR"> | 247 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="rO0-9o-lPR"> |
248 | - <rect key="frame" x="198" y="0.0" width="176" height="118.5"/> | 248 | + <rect key="frame" x="179.5" y="0.0" width="194.5" height="118.5"/> |
249 | </imageView> | 249 | </imageView> |
250 | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wwZ-Gb-7yh" userLabel="InfoView"> | 250 | <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wwZ-Gb-7yh" userLabel="InfoView"> |
251 | - <rect key="frame" x="0.0" y="0.0" width="299" height="118.5"/> | 251 | + <rect key="frame" x="0.0" y="0.0" width="280.5" height="118.5"/> |
252 | <subviews> | 252 | <subviews> |
253 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="curved_bg_white" translatesAutoresizingMaskIntoConstraints="NO" id="VSX-eK-ySx"> | 253 | <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="curved_bg_white" translatesAutoresizingMaskIntoConstraints="NO" id="VSX-eK-ySx"> |
254 | - <rect key="frame" x="0.0" y="0.0" width="299" height="118.5"/> | 254 | + <rect key="frame" x="0.0" y="0.0" width="280.5" height="118.5"/> |
255 | </imageView> | 255 | </imageView> |
256 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGH-0a-Rkp"> | 256 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZGH-0a-Rkp"> |
257 | - <rect key="frame" x="20" y="10" width="229" height="21"/> | 257 | + <rect key="frame" x="20" y="10" width="210.5" height="20"/> |
258 | - <fontDescription key="fontDescription" name="PFSquareSansPro-BoldItalic" family="PF Square Sans Pro" pointSize="18"/> | 258 | + <fontDescription key="fontDescription" name="BTCosmo-Bold" family="BTCosmo" pointSize="17"/> |
259 | - <color key="textColor" red="0.22745098039215686" green="0.32156862745098036" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> | 259 | + <color key="textColor" red="0.12941176470588234" green="0.12941176470588234" blue="0.12941176470588234" alpha="1" colorSpace="calibratedRGB"/> |
260 | <nil key="highlightedColor"/> | 260 | <nil key="highlightedColor"/> |
261 | </label> | 261 | </label> |
262 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lIv-wc-Oa8"> | 262 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lIv-wc-Oa8"> |
263 | - <rect key="frame" x="20" y="36" width="229" height="19"/> | 263 | + <rect key="frame" x="20" y="35" width="210.5" height="18.5"/> |
264 | - <fontDescription key="fontDescription" name="PFSquareSansPro-Regular" family="PF Square Sans Pro" pointSize="16"/> | 264 | + <fontDescription key="fontDescription" name="PeridotPE-Regular" family="Peridot PE" pointSize="15"/> |
265 | - <color key="textColor" red="0.22745098039215686" green="0.32156862745098036" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> | 265 | + <color key="textColor" red="0.12941176470588234" green="0.12941176470588234" blue="0.12941176470588234" alpha="1" colorSpace="calibratedRGB"/> |
266 | <nil key="highlightedColor"/> | 266 | <nil key="highlightedColor"/> |
267 | </label> | 267 | </label> |
268 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bmR-su-WJq"> | 268 | <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="4" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bmR-su-WJq"> |
269 | - <rect key="frame" x="20" y="92" width="229" height="16.5"/> | 269 | + <rect key="frame" x="20" y="90" width="210.5" height="18.5"/> |
270 | - <fontDescription key="fontDescription" name="PFSquareSansPro-Bold" family="PF Square Sans Pro" pointSize="14"/> | 270 | + <fontDescription key="fontDescription" name="PeridotPE-SBold" family="Peridot PE" pointSize="15"/> |
271 | - <color key="textColor" red="0.22745098039215686" green="0.32156862745098036" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/> | 271 | + <color key="textColor" red="0.12941176470588234" green="0.12941176470588234" blue="0.12941176470588234" alpha="1" colorSpace="calibratedRGB"/> |
272 | <nil key="highlightedColor"/> | 272 | <nil key="highlightedColor"/> |
273 | </label> | 273 | </label> |
274 | </subviews> | 274 | </subviews> |
... | @@ -295,10 +295,10 @@ | ... | @@ -295,10 +295,10 @@ |
295 | <constraints> | 295 | <constraints> |
296 | <constraint firstAttribute="trailing" secondItem="rO0-9o-lPR" secondAttribute="trailing" id="1ML-M9-7re"/> | 296 | <constraint firstAttribute="trailing" secondItem="rO0-9o-lPR" secondAttribute="trailing" id="1ML-M9-7re"/> |
297 | <constraint firstItem="wwZ-Gb-7yh" firstAttribute="leading" secondItem="gk0-7d-Ok4" secondAttribute="leading" id="4zX-6H-wCP"/> | 297 | <constraint firstItem="wwZ-Gb-7yh" firstAttribute="leading" secondItem="gk0-7d-Ok4" secondAttribute="leading" id="4zX-6H-wCP"/> |
298 | - <constraint firstItem="rO0-9o-lPR" firstAttribute="width" secondItem="gk0-7d-Ok4" secondAttribute="width" multiplier="0.47" id="Nx2-CC-7uS"/> | 298 | + <constraint firstItem="rO0-9o-lPR" firstAttribute="width" secondItem="gk0-7d-Ok4" secondAttribute="width" multiplier="0.52" id="Nx2-CC-7uS"/> |
299 | <constraint firstAttribute="bottom" secondItem="wwZ-Gb-7yh" secondAttribute="bottom" id="R9h-bH-ljJ"/> | 299 | <constraint firstAttribute="bottom" secondItem="wwZ-Gb-7yh" secondAttribute="bottom" id="R9h-bH-ljJ"/> |
300 | <constraint firstAttribute="bottom" secondItem="rO0-9o-lPR" secondAttribute="bottom" id="j9C-vp-fe1"/> | 300 | <constraint firstAttribute="bottom" secondItem="rO0-9o-lPR" secondAttribute="bottom" id="j9C-vp-fe1"/> |
301 | - <constraint firstItem="wwZ-Gb-7yh" firstAttribute="width" secondItem="gk0-7d-Ok4" secondAttribute="width" multiplier="0.8" id="jgZ-ZW-oVV"/> | 301 | + <constraint firstItem="wwZ-Gb-7yh" firstAttribute="width" secondItem="gk0-7d-Ok4" secondAttribute="width" multiplier="0.75" id="jgZ-ZW-oVV"/> |
302 | <constraint firstItem="rO0-9o-lPR" firstAttribute="top" secondItem="gk0-7d-Ok4" secondAttribute="top" id="qFk-ry-HF3"/> | 302 | <constraint firstItem="rO0-9o-lPR" firstAttribute="top" secondItem="gk0-7d-Ok4" secondAttribute="top" id="qFk-ry-HF3"/> |
303 | <constraint firstItem="wwZ-Gb-7yh" firstAttribute="top" secondItem="gk0-7d-Ok4" secondAttribute="top" id="zzi-VV-ocs"/> | 303 | <constraint firstItem="wwZ-Gb-7yh" firstAttribute="top" secondItem="gk0-7d-Ok4" secondAttribute="top" id="zzi-VV-ocs"/> |
304 | </constraints> | 304 | </constraints> |
... | @@ -339,11 +339,11 @@ | ... | @@ -339,11 +339,11 @@ |
339 | <outlet property="delegate" destination="YRk-Az-LOb" id="xhM-mG-VTI"/> | 339 | <outlet property="delegate" destination="YRk-Az-LOb" id="xhM-mG-VTI"/> |
340 | </connections> | 340 | </connections> |
341 | </tableView> | 341 | </tableView> |
342 | - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8mV-zg-aKO"> | 342 | + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="8mV-zg-aKO"> |
343 | <rect key="frame" x="0.0" y="420" width="414" height="11.5"/> | 343 | <rect key="frame" x="0.0" y="420" width="414" height="11.5"/> |
344 | </imageView> | 344 | </imageView> |
345 | </subviews> | 345 | </subviews> |
346 | - <color key="backgroundColor" red="0.21960784310000001" green="0.32156862749999998" blue="0.4039215686" alpha="1" colorSpace="calibratedRGB"/> | 346 | + <color key="backgroundColor" red="0.94901960784313721" green="0.94901960784313721" blue="0.95294117647058818" alpha="1" colorSpace="calibratedRGB"/> |
347 | <constraints> | 347 | <constraints> |
348 | <constraint firstAttribute="bottom" secondItem="A8b-3b-5xc" secondAttribute="bottom" id="9LG-av-UIJ"/> | 348 | <constraint firstAttribute="bottom" secondItem="A8b-3b-5xc" secondAttribute="bottom" id="9LG-av-UIJ"/> |
349 | <constraint firstItem="A8b-3b-5xc" firstAttribute="top" secondItem="NSn-MS-EVn" secondAttribute="top" id="Gfl-IG-H5C"/> | 349 | <constraint firstItem="A8b-3b-5xc" firstAttribute="top" secondItem="NSn-MS-EVn" secondAttribute="top" id="Gfl-IG-H5C"/> |
... | @@ -353,6 +353,11 @@ | ... | @@ -353,6 +353,11 @@ |
353 | <constraint firstItem="8mV-zg-aKO" firstAttribute="top" secondItem="NSn-MS-EVn" secondAttribute="top" id="jVC-qs-cac"/> | 353 | <constraint firstItem="8mV-zg-aKO" firstAttribute="top" secondItem="NSn-MS-EVn" secondAttribute="top" id="jVC-qs-cac"/> |
354 | <constraint firstAttribute="trailing" secondItem="8mV-zg-aKO" secondAttribute="trailing" id="zBg-nO-B4w"/> | 354 | <constraint firstAttribute="trailing" secondItem="8mV-zg-aKO" secondAttribute="trailing" id="zBg-nO-B4w"/> |
355 | </constraints> | 355 | </constraints> |
356 | + <variation key="default"> | ||
357 | + <mask key="subviews"> | ||
358 | + <exclude reference="8mV-zg-aKO"/> | ||
359 | + </mask> | ||
360 | + </variation> | ||
356 | </view> | 361 | </view> |
357 | </subviews> | 362 | </subviews> |
358 | <viewLayoutGuide key="safeArea" id="THS-z4-i7u"/> | 363 | <viewLayoutGuide key="safeArea" id="THS-z4-i7u"/> | ... | ... |
... | @@ -523,3 +523,87 @@ class UnselectableTappableTextView: UITextView { | ... | @@ -523,3 +523,87 @@ class UnselectableTappableTextView: UITextView { |
523 | return false | 523 | return false |
524 | } | 524 | } |
525 | } | 525 | } |
526 | + | ||
527 | +extension UIBezierPath { | ||
528 | + convenience init(shouldRoundRect rect: CGRect, topLeftRadius: CGSize = .zero, topRightRadius: CGSize = .zero, bottomLeftRadius: CGSize = .zero, bottomRightRadius: CGSize = .zero){ | ||
529 | + | ||
530 | + self.init() | ||
531 | + | ||
532 | + let path = CGMutablePath() | ||
533 | + | ||
534 | + let topLeft = rect.origin | ||
535 | + let topRight = CGPoint(x: rect.maxX, y: rect.minY) | ||
536 | + let bottomRight = CGPoint(x: rect.maxX, y: rect.maxY) | ||
537 | + let bottomLeft = CGPoint(x: rect.minX, y: rect.maxY) | ||
538 | + | ||
539 | + if topLeftRadius != .zero{ | ||
540 | + path.move(to: CGPoint(x: topLeft.x+topLeftRadius.width, y: topLeft.y)) | ||
541 | + } else { | ||
542 | + path.move(to: CGPoint(x: topLeft.x, y: topLeft.y)) | ||
543 | + } | ||
544 | + | ||
545 | + if topRightRadius != .zero{ | ||
546 | + path.addLine(to: CGPoint(x: topRight.x-topRightRadius.width, y: topRight.y)) | ||
547 | + path.addCurve(to: CGPoint(x: topRight.x, y: topRight.y+topRightRadius.height), control1: CGPoint(x: topRight.x, y: topRight.y), control2:CGPoint(x: topRight.x, y: topRight.y+topRightRadius.height)) | ||
548 | + } else { | ||
549 | + path.addLine(to: CGPoint(x: topRight.x, y: topRight.y)) | ||
550 | + } | ||
551 | + | ||
552 | + if bottomRightRadius != .zero{ | ||
553 | + path.addLine(to: CGPoint(x: bottomRight.x, y: bottomRight.y-bottomRightRadius.height)) | ||
554 | + path.addCurve(to: CGPoint(x: bottomRight.x-bottomRightRadius.width, y: bottomRight.y), control1: CGPoint(x: bottomRight.x, y: bottomRight.y), control2: CGPoint(x: bottomRight.x-bottomRightRadius.width, y: bottomRight.y)) | ||
555 | + } else { | ||
556 | + path.addLine(to: CGPoint(x: bottomRight.x, y: bottomRight.y)) | ||
557 | + } | ||
558 | + | ||
559 | + if bottomLeftRadius != .zero{ | ||
560 | + path.addLine(to: CGPoint(x: bottomLeft.x+bottomLeftRadius.width, y: bottomLeft.y)) | ||
561 | + path.addCurve(to: CGPoint(x: bottomLeft.x, y: bottomLeft.y-bottomLeftRadius.height), control1: CGPoint(x: bottomLeft.x, y: bottomLeft.y), control2: CGPoint(x: bottomLeft.x, y: bottomLeft.y-bottomLeftRadius.height)) | ||
562 | + } else { | ||
563 | + path.addLine(to: CGPoint(x: bottomLeft.x, y: bottomLeft.y)) | ||
564 | + } | ||
565 | + | ||
566 | + if topLeftRadius != .zero{ | ||
567 | + path.addLine(to: CGPoint(x: topLeft.x, y: topLeft.y+topLeftRadius.height)) | ||
568 | + path.addCurve(to: CGPoint(x: topLeft.x+topLeftRadius.width, y: topLeft.y) , control1: CGPoint(x: topLeft.x, y: topLeft.y) , control2: CGPoint(x: topLeft.x+topLeftRadius.width, y: topLeft.y)) | ||
569 | + } else { | ||
570 | + path.addLine(to: CGPoint(x: topLeft.x, y: topLeft.y)) | ||
571 | + } | ||
572 | + | ||
573 | + path.closeSubpath() | ||
574 | + cgPath = path | ||
575 | + } | ||
576 | +} | ||
577 | + | ||
578 | +extension UIView{ | ||
579 | + func roundCorners(topLeft: CGFloat = 0, topRight: CGFloat = 0, bottomLeft: CGFloat = 0, bottomRight: CGFloat = 0) {//(topLeft: CGFloat, topRight: CGFloat, bottomLeft: CGFloat, bottomRight: CGFloat) { | ||
580 | + let topLeftRadius = CGSize(width: topLeft, height: topLeft) | ||
581 | + let topRightRadius = CGSize(width: topRight, height: topRight) | ||
582 | + let bottomLeftRadius = CGSize(width: bottomLeft, height: bottomLeft) | ||
583 | + let bottomRightRadius = CGSize(width: bottomRight, height: bottomRight) | ||
584 | + let maskPath = UIBezierPath(shouldRoundRect: bounds, topLeftRadius: topLeftRadius, topRightRadius: topRightRadius, bottomLeftRadius: bottomLeftRadius, bottomRightRadius: bottomRightRadius) | ||
585 | + let shape = CAShapeLayer() | ||
586 | + shape.path = maskPath.cgPath | ||
587 | + layer.mask = shape | ||
588 | + } | ||
589 | +} | ||
590 | + | ||
591 | +extension UIView { | ||
592 | + func applyRadiusMaskFor(topLeft: CGFloat = 0, bottomLeft: CGFloat = 0, bottomRight: CGFloat = 0, topRight: CGFloat = 0) { | ||
593 | + | ||
594 | + let path = UIBezierPath() | ||
595 | + path.move(to: CGPoint(x: bounds.width - topRight, y: 0)) | ||
596 | + path.addLine(to: CGPoint(x: topLeft, y: 0)) | ||
597 | + path.addQuadCurve(to: CGPoint(x: 0, y: topLeft), controlPoint: .zero) | ||
598 | + path.addLine(to: CGPoint(x: 0, y: bounds.height - bottomLeft)) | ||
599 | + path.addQuadCurve(to: CGPoint(x: bottomLeft, y: bounds.height), controlPoint: CGPoint(x: 0, y: bounds.height)) | ||
600 | + path.addLine(to: CGPoint(x: bounds.width - bottomRight, y: bounds.height)) | ||
601 | + path.addQuadCurve(to: CGPoint(x: bounds.width, y: bounds.height - bottomRight), controlPoint: CGPoint(x: bounds.width, y: bounds.height)) | ||
602 | + path.addLine(to: CGPoint(x: bounds.width, y: topRight)) | ||
603 | + path.addQuadCurve(to: CGPoint(x: bounds.width - topRight, y: 0), controlPoint: CGPoint(x: bounds.width, y: 0)) | ||
604 | + | ||
605 | + let shape = CAShapeLayer() | ||
606 | + shape.path = path.cgPath | ||
607 | + layer.mask = shape | ||
608 | + } | ||
609 | +} | ... | ... |
-
Please register or login to post a comment