diff --git a/Assignment/29th-assignment/29th-assignment.xcodeproj/project.pbxproj b/Assignment/29th-assignment/29th-assignment.xcodeproj/project.pbxproj index d7eb50b..20c82a8 100644 --- a/Assignment/29th-assignment/29th-assignment.xcodeproj/project.pbxproj +++ b/Assignment/29th-assignment/29th-assignment.xcodeproj/project.pbxproj @@ -50,6 +50,10 @@ 4FD1828A270DD75900BC7DE2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4FD18288270DD75900BC7DE2 /* LaunchScreen.storyboard */; }; 4FD182B627104CFB00BC7DE2 /* SignUpVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD182B527104CFB00BC7DE2 /* SignUpVC.swift */; }; 4FD182B82710658E00BC7DE2 /* CompleteVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD182B72710658E00BC7DE2 /* CompleteVC.swift */; }; + 4FDDACC22775F50E004DBF03 /* DetailContent.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4FDDACC12775F50E004DBF03 /* DetailContent.storyboard */; }; + 4FDDACC42775F5D0004DBF03 /* DetailContentVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FDDACC32775F5D0004DBF03 /* DetailContentVC.swift */; }; + 4FDDACC62775F941004DBF03 /* DetailContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FDDACC52775F941004DBF03 /* DetailContent.swift */; }; + 4FDDACC827760078004DBF03 /* PresentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FDDACC727760078004DBF03 /* PresentView.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -99,6 +103,10 @@ 4FD1828B270DD75900BC7DE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; 4FD182B527104CFB00BC7DE2 /* SignUpVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignUpVC.swift; sourceTree = "<group>"; }; 4FD182B72710658E00BC7DE2 /* CompleteVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompleteVC.swift; sourceTree = "<group>"; }; + 4FDDACC12775F50E004DBF03 /* DetailContent.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = DetailContent.storyboard; sourceTree = "<group>"; }; + 4FDDACC32775F5D0004DBF03 /* DetailContentVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailContentVC.swift; sourceTree = "<group>"; }; + 4FDDACC52775F941004DBF03 /* DetailContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailContent.swift; sourceTree = "<group>"; }; + 4FDDACC727760078004DBF03 /* PresentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PresentView.swift; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -188,6 +196,7 @@ 4F4256EF2722202D0001F62E /* HomeVC.swift */, 4F819C55272BF4EA008B41DD /* HomeVC+CollectionView.swift */, 4F819C4D272BE38C008B41DD /* HomeVC+TableView.swift */, + 4FDDACC32775F5D0004DBF03 /* DetailContentVC.swift */, ); path = Controller; sourceTree = "<group>"; @@ -196,6 +205,7 @@ isa = PBXGroup; children = ( 4F4256ED27221A7F0001F62E /* Home.storyboard */, + 4FDDACC12775F50E004DBF03 /* DetailContent.storyboard */, ); path = Storyboard; sourceTree = "<group>"; @@ -320,6 +330,7 @@ 4F819C49272BD8CF008B41DD /* HomeManager.swift */, 4F819C53272BF20D008B41DD /* Channel.swift */, 4F838C91272DA871008D4DFB /* Tag.swift */, + 4FDDACC52775F941004DBF03 /* DetailContent.swift */, ); path = Model; sourceTree = "<group>"; @@ -331,6 +342,7 @@ 4F838C9C272DB2C3008D4DFB /* ChannelManger.swift */, 4F838C9E272DB2EA008D4DFB /* ThumbnailManager.swift */, 4F838CA0272DB481008D4DFB /* TagManager.swift */, + 4FDDACC727760078004DBF03 /* PresentView.swift */, ); path = Protocols; sourceTree = "<group>"; @@ -456,6 +468,7 @@ files = ( 4F4256E1272217870001F62E /* TabBar.storyboard in Resources */, 4F4256EE27221A7F0001F62E /* Home.storyboard in Resources */, + 4FDDACC22775F50E004DBF03 /* DetailContent.storyboard in Resources */, 4F819C45272BCA6B008B41DD /* ThumbnailTVC.xib in Resources */, 4F4256FE2722246B0001F62E /* Add.storyboard in Resources */, 4FD1828A270DD75900BC7DE2 /* LaunchScreen.storyboard in Resources */, @@ -485,6 +498,7 @@ 4F819C54272BF20D008B41DD /* Channel.swift in Sources */, 4FD182B627104CFB00BC7DE2 /* SignUpVC.swift in Sources */, 4F4256F02722202D0001F62E /* HomeVC.swift in Sources */, + 4FDDACC62775F941004DBF03 /* DetailContent.swift in Sources */, 4F4256E52722184B0001F62E /* TBC.swift in Sources */, 4F819C48272BD1B2008B41DD /* Thumbnail.swift in Sources */, 4F838C95272DA98E008D4DFB /* CellProtocol.swift in Sources */, @@ -499,6 +513,7 @@ 4F819C56272BF4EA008B41DD /* HomeVC+CollectionView.swift in Sources */, 4F838C9F272DB2EA008D4DFB /* ThumbnailManager.swift in Sources */, 4FD18280270DD75700BC7DE2 /* SceneDelegate.swift in Sources */, + 4FDDACC42775F5D0004DBF03 /* DetailContentVC.swift in Sources */, 4F838C9A272DAEF0008D4DFB /* TagCVC.swift in Sources */, 4F838C9D272DB2C4008D4DFB /* ChannelManger.swift in Sources */, 4F819C44272BCA6B008B41DD /* ThumbnailTVC.swift in Sources */, @@ -506,6 +521,7 @@ 4FB8EFCD2741055200A5BB7E /* UserSignService.swift in Sources */, 4F2AE03227426577006785E4 /* UIViewController+makeAlert.swift in Sources */, 4FB8EFD32741263A00A5BB7E /* AuthResponse.swift in Sources */, + 4FDDACC827760078004DBF03 /* PresentView.swift in Sources */, 4F01E4DB272FD9A200785744 /* UIView+IBInspectable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/Contents.json b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/Contents.json new file mode 100644 index 0000000..51a2ece --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icn_dismissBtn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icn_dismissBtn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icn_dismissBtn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png new file mode 100644 index 0000000..c044b8b Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png new file mode 100644 index 0000000..6d8fb46 Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@2x.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png new file mode 100644 index 0000000..c06c148 Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_dismissBtn.imageset/icn_dismissBtn@3x.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/Contents.json b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/Contents.json new file mode 100644 index 0000000..f63c269 --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icn_expandBtn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icn_expandBtn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icn_expandBtn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn.png new file mode 100644 index 0000000..8f83e32 Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png new file mode 100644 index 0000000..752f33e Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@2x.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@3x.png b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@3x.png new file mode 100644 index 0000000..cc992ee Binary files /dev/null and b/Assignment/29th-assignment/29th-assignment/Assets.xcassets/icn_expandBtn.imageset/icn_expandBtn@3x.png differ diff --git a/Assignment/29th-assignment/29th-assignment/Protocols/PresentView.swift b/Assignment/29th-assignment/29th-assignment/Protocols/PresentView.swift new file mode 100644 index 0000000..66bf82f --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Protocols/PresentView.swift @@ -0,0 +1,12 @@ +// +// PresentView.swift +// 29th-assignment +// +// Created by Noah on 2021/12/24. +// + +import UIKit + +protocol PresentView: AnyObject { + func present(viewController: UIViewController) +} diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.swift b/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.swift index f4ffef6..db9882a 100644 --- a/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.swift +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.swift @@ -10,14 +10,16 @@ import UIKit class ThumbnailTVC: UITableViewCell { var manager = HomeManager.shared + weak var delegate: PresentView? - @IBOutlet weak var thumbnailImage: UIImageView! - @IBOutlet weak var profileImage: UIImageView! - @IBOutlet weak var thumbnailTitle: UILabel! - @IBOutlet weak var infoLabel: UILabel! + @IBOutlet weak var thumbnailImage: UIImageView? + @IBOutlet weak var profileImage: UIImageView? + @IBOutlet weak var thumbnailTitle: UILabel? + @IBOutlet weak var infoLabel: UILabel? override func awakeFromNib() { super.awakeFromNib() + initTapGestureForImageView() } override func setSelected(_ selected: Bool, animated: Bool) { @@ -30,11 +32,33 @@ extension ThumbnailTVC: CellProtocol { static let identifier = "ThumbnailTVC" func getCellConfigureAt(_ index: Int) { - thumbnailImage.image = manager.getThumbnailImage(index) - thumbnailTitle.text = manager.getThumbnailTitle(index) + thumbnailImage?.image = manager.getThumbnailImage(index) + thumbnailTitle?.text = manager.getThumbnailTitle(index) let author = manager.getThumbnailAuthor(index) let views = manager.getThumbnailViews(index) let created = manager.getThumbnailCreatedDate(index) - infoLabel.text = "\(author) ・ 조회수 \(views) ・ \(created)" + infoLabel?.text = "\(author) ・ 조회수 \(views) ・ \(created)" + } +} + +extension ThumbnailTVC { + private func initTapGestureForImageView() { + let tapRecognizer = UITapGestureRecognizer(target: self, + action: #selector(self.profileImageDidTap)) + thumbnailImage?.addGestureRecognizer(tapRecognizer) + thumbnailImage?.isUserInteractionEnabled = true + } + + @objc func profileImageDidTap() { + let detailContentSB = UIStoryboard(name: "DetailContent", bundle: nil) + guard let detailContentVC = detailContentSB.instantiateViewController(withIdentifier: DetailContentVC.identifier) as? DetailContentVC + else { return } + detailContentVC.modalPresentationStyle = .fullScreen + + let detailContentData = DetailContent(contentImage: thumbnailImage?.image, + contentTitle: thumbnailTitle?.text, + contentInfo: infoLabel?.text) + detailContentVC.contentData = detailContentData + delegate?.present(viewController: detailContentVC) } } diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.xib b/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.xib index f88e447..63be2d3 100644 --- a/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.xib +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Cells/ThumbnailTVC.xib @@ -9,7 +9,7 @@ <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="ThumbnailTVC" id="KGk-i7-Jjw" customClass="ThumbnailTVC" customModule="_9th_assignment" customModuleProvider="target"> + <tableViewCell contentMode="scaleToFill" restorationIdentifier="ThumbnailTVC" selectionStyle="default" indentationWidth="10" reuseIdentifier="ThumbnailTVC" id="KGk-i7-Jjw" customClass="ThumbnailTVC" customModule="_9th_assignment" customModuleProvider="target"> <rect key="frame" x="0.0" y="0.0" width="375" height="306"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM"> @@ -18,6 +18,7 @@ <subviews> <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wesoptiOSPart" translatesAutoresizingMaskIntoConstraints="NO" id="zSs-r5-z1Z"> <rect key="frame" x="0.0" y="0.0" width="375" height="212"/> + <gestureRecognizers/> <constraints> <constraint firstAttribute="height" constant="212" id="4fx-gU-fRg"/> </constraints> diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/DetailContentVC.swift b/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/DetailContentVC.swift new file mode 100644 index 0000000..6a93e44 --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/DetailContentVC.swift @@ -0,0 +1,36 @@ +// +// DetailContentVC.swift +// 29th-assignment +// +// Created by Noah on 2021/12/24. +// + +import UIKit + +class DetailContentVC: UIViewController { + + @IBOutlet private weak var contentImage: UIImageView? + @IBOutlet private weak var contentTitle: UILabel? + @IBOutlet private weak var contentInfo: UILabel? + + lazy var contentData = DetailContent() + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + } + + @IBAction func dismissBtnDidTap(_ sender: Any) { + dismiss(animated: true) + } +} + +extension DetailContentVC { + static let identifier = "DetailContentVC" + + private func setUI() { + contentImage?.image = contentData.contentImage + contentTitle?.text = contentData.contentTitle + contentInfo?.text = contentData.contentInfo + } +} diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/HomeVC+TableView.swift b/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/HomeVC+TableView.swift index 723f8b5..22d9106 100644 --- a/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/HomeVC+TableView.swift +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Controller/HomeVC+TableView.swift @@ -20,7 +20,16 @@ extension HomeVC: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell(withIdentifier: ThumbnailTVC.identifier) as? ThumbnailTVC else { return UITableViewCell() } + cell.getCellConfigureAt(indexPath.row) + cell.delegate = self + return cell } } + +extension HomeVC: PresentView { + func present(viewController: UIViewController) { + self.present(viewController, animated: true) + } +} diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Model/DetailContent.swift b/Assignment/29th-assignment/29th-assignment/Screens/Home/Model/DetailContent.swift new file mode 100644 index 0000000..e2042f0 --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Model/DetailContent.swift @@ -0,0 +1,14 @@ +// +// DetailContent.swift +// 29th-assignment +// +// Created by Noah on 2021/12/24. +// + +import UIKit + +struct DetailContent { + var contentImage: UIImage? + var contentTitle: String? + var contentInfo: String? +} diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/DetailContent.storyboard b/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/DetailContent.storyboard new file mode 100644 index 0000000..9f25c86 --- /dev/null +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/DetailContent.storyboard @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_1" orientation="portrait" appearance="light"/> + <dependencies> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="System colors in document resources" minToolsVersion="11.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <scenes> + <!--Detail ContentVC--> + <scene sceneID="s0d-6b-0kx"> + <objects> + <viewController storyboardIdentifier="DetailContentVC" id="Y6W-OH-hqX" customClass="DetailContentVC" customModule="_9th_assignment" customModuleProvider="target" sceneMemberID="viewController"> + <view key="view" contentMode="scaleToFill" id="5EZ-qb-Rvc"> + <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="q6B-4A-WGG"> + <rect key="frame" x="0.0" y="44" width="414" height="212"/> + <constraints> + <constraint firstAttribute="height" constant="212" id="dM7-CE-X9c"/> + </constraints> + </imageView> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="YpL-yC-CsR"> + <rect key="frame" x="12" y="56" width="24" height="24"/> + <constraints> + <constraint firstAttribute="width" constant="24" id="YG2-9j-vNe"/> + <constraint firstAttribute="height" constant="24" id="vgY-qa-8UO"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" image="icn_dismissBtn"/> + <connections> + <action selector="dismissBtnDidTap:" destination="Y6W-OH-hqX" eventType="touchUpInside" id="f79-7v-FOJ"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mQU-W0-4aQ"> + <rect key="frame" x="12" y="268" width="309" height="18"/> + <fontDescription key="fontDescription" type="system" pointSize="15"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5A9-F0-9zf"> + <rect key="frame" x="12" y="290" width="309" height="16"/> + <fontDescription key="fontDescription" type="system" pointSize="13"/> + <color key="textColor" red="0.37647058823529411" green="0.37647058823529411" blue="0.37647058823529411" alpha="1" colorSpace="calibratedRGB"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DrE-Nb-55d"> + <rect key="frame" x="381" y="268" width="26" height="26"/> + <constraints> + <constraint firstAttribute="height" constant="26" id="7g9-K9-CJn"/> + <constraint firstAttribute="width" constant="26" id="KS9-cA-FAh"/> + </constraints> + <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> + <state key="normal" title="Button" image="icn_expandBtn"/> + </button> + </subviews> + <viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="vDu-zF-Fre" firstAttribute="trailing" secondItem="DrE-Nb-55d" secondAttribute="trailing" constant="7" id="059-IT-TWy"/> + <constraint firstItem="mQU-W0-4aQ" firstAttribute="top" secondItem="q6B-4A-WGG" secondAttribute="bottom" constant="12" id="IOq-ln-ak7"/> + <constraint firstItem="DrE-Nb-55d" firstAttribute="top" secondItem="q6B-4A-WGG" secondAttribute="bottom" constant="12" id="MSn-u7-gsI"/> + <constraint firstItem="5A9-F0-9zf" firstAttribute="top" secondItem="mQU-W0-4aQ" secondAttribute="bottom" constant="4" id="QuT-Go-kH6"/> + <constraint firstItem="YpL-yC-CsR" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" constant="12" id="WpC-da-mSD"/> + <constraint firstItem="q6B-4A-WGG" firstAttribute="top" secondItem="vDu-zF-Fre" secondAttribute="top" id="Zt5-0Z-AGM"/> + <constraint firstItem="vDu-zF-Fre" firstAttribute="trailing" secondItem="q6B-4A-WGG" secondAttribute="trailing" id="fSv-LR-Sx9"/> + <constraint firstItem="YpL-yC-CsR" firstAttribute="top" secondItem="vDu-zF-Fre" secondAttribute="top" constant="12" id="gLN-1U-z8s"/> + <constraint firstItem="5A9-F0-9zf" firstAttribute="leading" secondItem="mQU-W0-4aQ" secondAttribute="leading" id="jbW-Pf-5Uu"/> + <constraint firstItem="q6B-4A-WGG" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" id="kkf-OB-tCL"/> + <constraint firstItem="5A9-F0-9zf" firstAttribute="trailing" secondItem="mQU-W0-4aQ" secondAttribute="trailing" id="ldc-f8-cms"/> + <constraint firstItem="DrE-Nb-55d" firstAttribute="leading" secondItem="mQU-W0-4aQ" secondAttribute="trailing" constant="60" id="qRP-Ym-5Ct"/> + <constraint firstItem="mQU-W0-4aQ" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" constant="12" id="s8y-zx-Coy"/> + </constraints> + </view> + <connections> + <outlet property="contentImage" destination="q6B-4A-WGG" id="K5J-yh-gLd"/> + <outlet property="contentInfo" destination="5A9-F0-9zf" id="0eQ-6l-O3w"/> + <outlet property="contentTitle" destination="mQU-W0-4aQ" id="4sh-8t-Ncu"/> + </connections> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="Ief-a0-LHa" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="139" y="101"/> + </scene> + </scenes> + <resources> + <image name="icn_dismissBtn" width="16" height="16"/> + <image name="icn_expandBtn" width="26" height="26"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/Home.storyboard b/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/Home.storyboard index 710969d..f7562be 100644 --- a/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/Home.storyboard +++ b/Assignment/29th-assignment/29th-assignment/Screens/Home/Storyboard/Home.storyboard @@ -17,7 +17,7 @@ <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="DIB-jf-DYR"> + <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" allowsSelection="NO" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="DIB-jf-DYR"> <rect key="frame" x="0.0" y="210" width="414" height="652"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> </tableView>