Browse Source

Development

master
Dwayne Harris 6 years ago
parent
commit
c1671bb23b
  1. 26
      elpha-ios.xcodeproj/project.pbxproj
  2. 13
      elpha-ios/AccountNavigationController.swift
  3. 105
      elpha-ios/AccountTableViewController.swift
  4. 12
      elpha-ios/Assets.xcassets/Account.imageset/Contents.json
  5. BIN
      elpha-ios/Assets.xcassets/Account.imageset/user-circle.pdf
  6. 12
      elpha-ios/Assets.xcassets/Comments.imageset/Contents.json
  7. BIN
      elpha-ios/Assets.xcassets/Comments.imageset/comments.pdf
  8. 722
      elpha-ios/Base.lproj/Main.storyboard
  9. 13
      elpha-ios/NewStatusesView.swift
  10. 18
      elpha-ios/NewStatusesView.xib
  11. 55
      elpha-ios/StatusView.swift
  12. 473
      elpha-ios/StatusView.xib
  13. 26
      elpha-ios/TimelineTableViewCell.swift
  14. 96
      elpha-ios/TimelineTableViewController.swift
  15. 5
      elpha-ios/TimelinesNavigationController.swift

26
elpha-ios.xcodeproj/project.pbxproj

@ -7,13 +7,15 @@
objects = {
/* Begin PBXBuildFile section */
151AD4D8216899AD00F07403 /* AlamofireImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1517EA842159D72200DE80D6 /* AlamofireImage.framework */; };
15131ED8216D8C680092B252 /* StatusView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 15131ED7216D8C680092B252 /* StatusView.xib */; };
15131EF2216D8D570092B252 /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15131EF1216D8D570092B252 /* StatusView.swift */; };
15131EF4216DB8B90092B252 /* AccountTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15131EF3216DB8B90092B252 /* AccountTableViewController.swift */; };
15131EF6216DBA820092B252 /* AccountNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15131EF5216DBA820092B252 /* AccountNavigationController.swift */; };
151AD4D9216899AD00F07403 /* AlamofireImage.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 1517EA842159D72200DE80D6 /* AlamofireImage.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
151AD4DD216899E000F07403 /* OAuthSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B13215B438C007A326E /* OAuthSwift.framework */; };
151AD4DE216899E000F07403 /* OAuthSwift.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B13215B438C007A326E /* OAuthSwift.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
151AD4E1216899F900F07403 /* MastodonKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B02215B3CC5007A326E /* MastodonKit.framework */; };
151AD4E2216899F900F07403 /* MastodonKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B02215B3CC5007A326E /* MastodonKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
151AD4E521689A0F00F07403 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 157405C3215890BC00EEAAEB /* Alamofire.framework */; };
151AD4E621689A0F00F07403 /* Alamofire.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 157405C3215890BC00EEAAEB /* Alamofire.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
157405A82150588A00EEAAEB /* InstanceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 157405A72150588A00EEAAEB /* InstanceViewController.swift */; };
157405B12151A5DA00EEAAEB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 157405AF2151A5DA00EEAAEB /* README.md */; };
@ -37,8 +39,6 @@
15960E7E21329FED00C38CE9 /* AuthenticateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15960E7D21329FED00C38CE9 /* AuthenticateViewController.swift */; };
15960E822136668500C38CE9 /* TimelinesNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15960E812136668500C38CE9 /* TimelinesNavigationController.swift */; };
15960E84213774FC00C38CE9 /* InstancesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15960E83213774FC00C38CE9 /* InstancesTableViewController.swift */; };
15A79B07215B3CD5007A326E /* MastodonKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B02215B3CC5007A326E /* MastodonKit.framework */; };
15A79B20215B439A007A326E /* OAuthSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A79B13215B438C007A326E /* OAuthSwift.framework */; };
15A79B2E215C63B6007A326E /* AlamofireImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1517EA842159D72200DE80D6 /* AlamofireImage.framework */; };
15A79B43215EB959007A326E /* CoreDataManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15A79B42215EB959007A326E /* CoreDataManager.swift */; };
15C91A02216AB2D600D97DC3 /* NewStatusesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 15C91A01216AB2D600D97DC3 /* NewStatusesView.xib */; };
@ -278,6 +278,10 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
15131ED7216D8C680092B252 /* StatusView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = StatusView.xib; sourceTree = "<group>"; };
15131EF1216D8D570092B252 /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = "<group>"; };
15131EF3216DB8B90092B252 /* AccountTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountTableViewController.swift; sourceTree = "<group>"; };
15131EF5216DBA820092B252 /* AccountNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountNavigationController.swift; sourceTree = "<group>"; };
1517EA6F2159D72200DE80D6 /* AlamofireImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AlamofireImage.xcodeproj; path = Frameworks/AlamofireImage/AlamofireImage.xcodeproj; sourceTree = "<group>"; };
157405A72150588A00EEAAEB /* InstanceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceViewController.swift; sourceTree = "<group>"; };
157405AF2151A5DA00EEAAEB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@ -318,13 +322,9 @@
buildActionMask = 2147483647;
files = (
15A79B2E215C63B6007A326E /* AlamofireImage.framework in Frameworks */,
151AD4D8216899AD00F07403 /* AlamofireImage.framework in Frameworks */,
151AD4DD216899E000F07403 /* OAuthSwift.framework in Frameworks */,
151AD4E1216899F900F07403 /* MastodonKit.framework in Frameworks */,
15A79B20215B439A007A326E /* OAuthSwift.framework in Frameworks */,
15A79B07215B3CD5007A326E /* MastodonKit.framework in Frameworks */,
157405D1215890D700EEAAEB /* Alamofire.framework in Frameworks */,
151AD4E521689A0F00F07403 /* Alamofire.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -372,6 +372,8 @@
children = (
15C91A01216AB2D600D97DC3 /* NewStatusesView.xib */,
15C91A03216AB32500D97DC3 /* NewStatusesView.swift */,
15131ED7216D8C680092B252 /* StatusView.xib */,
15131EF1216D8D570092B252 /* StatusView.swift */,
);
name = "Reusable Views";
sourceTree = "<group>";
@ -467,6 +469,8 @@
15960E782132383600C38CE9 /* View Controllers */ = {
isa = PBXGroup;
children = (
15131EF5216DBA820092B252 /* AccountNavigationController.swift */,
15131EF3216DB8B90092B252 /* AccountTableViewController.swift */,
15960E7D21329FED00C38CE9 /* AuthenticateViewController.swift */,
15960E83213774FC00C38CE9 /* InstancesTableViewController.swift */,
157405A72150588A00EEAAEB /* InstanceViewController.swift */,
@ -535,7 +539,7 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0940;
LastUpgradeCheck = 0940;
LastUpgradeCheck = 1000;
ORGANIZATIONNAME = Elpha;
TargetAttributes = {
15960E56213145E100C38CE9 = {
@ -775,6 +779,7 @@
15960E64213145E200C38CE9 /* Assets.xcassets in Resources */,
157405B12151A5DA00EEAAEB /* README.md in Resources */,
15960E62213145E100C38CE9 /* Main.storyboard in Resources */,
15131ED8216D8C680092B252 /* StatusView.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -790,14 +795,17 @@
15960E7021321FA500C38CE9 /* Elpha.xcdatamodeld in Sources */,
15F9981721629965009E58DA /* TimelineTableViewController.swift in Sources */,
157405B42151A93E00EEAAEB /* InstancesDataManager.swift in Sources */,
15131EF4216DB8B90092B252 /* AccountTableViewController.swift in Sources */,
15960E5F213145E100C38CE9 /* SecondViewController.swift in Sources */,
15F998352162C0E8009E58DA /* MastodonDataManager.swift in Sources */,
15960E7A2132387A00C38CE9 /* MainTabBarController.swift in Sources */,
15960E7C213272CD00C38CE9 /* AuthenticationManager.swift in Sources */,
15960E7E21329FED00C38CE9 /* AuthenticateViewController.swift in Sources */,
15960E5B213145E100C38CE9 /* AppDelegate.swift in Sources */,
15131EF2216D8D570092B252 /* StatusView.swift in Sources */,
15960E7721322C6F00C38CE9 /* Configuration.swift in Sources */,
15C91A04216AB32500D97DC3 /* NewStatusesView.swift in Sources */,
15131EF6216DBA820092B252 /* AccountNavigationController.swift in Sources */,
15960E7521322BF800C38CE9 /* KeychainWrapper.swift in Sources */,
157405A82150588A00EEAAEB /* InstanceViewController.swift in Sources */,
15960E7321322BC700C38CE9 /* KeychainItemAccessibility.swift in Sources */,

13
elpha-ios/AccountNavigationController.swift

@ -0,0 +1,13 @@
//
// AccountNavigationController.swift
// elpha-ios
//
// Created by Dwayne Harris on 10/9/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import UIKit
class AccountNavigationController: UINavigationController {
}

105
elpha-ios/AccountTableViewController.swift

@ -0,0 +1,105 @@
//
// AccountTableView.swift
// elpha-ios
//
// Created by Dwayne Harris on 10/9/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import AlamofireImage
import MastodonKit
import UIKit
class AccountTableViewController: UITableViewController {
@IBOutlet var headerImageView: UIImageView!
@IBOutlet var avatarImageView: UIImageView!
@IBOutlet var displayNameLabel: UILabel!
@IBOutlet var usernameLabel: UILabel!
@IBOutlet var contentLabel: UILabel!
@IBOutlet var statusesLabel: UILabel!
@IBOutlet var followingLabel: UILabel!
@IBOutlet var followersLabel: UILabel!
public var account: AccountMO? = nil
private func setAccount(_ account: AccountMO) {
let avatarFilter = AspectScaledToFillSizeWithRoundedCornersFilter(
size: CGSize(width: 70.0, height: 70.0),
radius: 20.0,
divideRadiusByImageScale: true
)
if let headerURL = account.headerURL {
headerImageView.af_setImage(withURL: headerURL)
}
if let avatarURL = account.avatarURL {
avatarImageView.af_setImage(withURL: avatarURL, filter: avatarFilter)
}
displayNameLabel.text = account.displayName
usernameLabel.text = account.acct
if let note = account.note {
do {
let styledContent = "<style>html * { font-size: 15px; color: #170c49; font-family: -apple-system } p { margin: 0; padding: 0 }</style> \(note)"
let attributedText = try NSAttributedString(
data: styledContent.data(using: String.Encoding.unicode, allowLossyConversion: true)!,
options: [.documentType: NSAttributedString.DocumentType.html],
documentAttributes: nil
)
contentLabel.attributedText = attributedText
} catch {
print("\(error)")
}
}
statusesLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.statusesCount), number: .decimal)
followingLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.followingCount), number: .decimal)
followersLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.followersCount), number: .decimal)
}
override func viewDidLoad() {
super.viewDidLoad()
if let navigationController = navigationController {
navigationController.view.backgroundColor = .clear
}
if self.account == nil {
if let session = AuthenticationManager.shared.selectedSession {
self.account = session.account
}
}
if let account = account {
setAccount(account)
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let account = self.account {
if let client = AuthenticationManager.shared.mkClientForSelectedSession() {
let request = Accounts.account(id: account.id!)
client.run(request) { result in
switch result {
case .success(let remoteAccount, _):
self.account = MastodonDataManager.upsertAccount(remoteAccount)
if let account = self.account {
DispatchQueue.main.async {
self.setAccount(account)
}
}
case .failure(let error):
print("\(error)")
}
}
}
}
}
}

12
elpha-ios/Assets.xcassets/Account.imageset/Contents.json

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "user-circle.pdf"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

BIN
elpha-ios/Assets.xcassets/Account.imageset/user-circle.pdf

12
elpha-ios/Assets.xcassets/Comments.imageset/Contents.json

@ -0,0 +1,12 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "comments.pdf"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

BIN
elpha-ios/Assets.xcassets/Comments.imageset/comments.pdf

722
elpha-ios/Base.lproj/Main.storyboard

@ -113,7 +113,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="aNa-IN-5Hu" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-615.20000000000005" y="770.46476761619192"/>
<point key="canvasLocation" x="0.0" y="1048"/>
</scene>
<!--Instances-->
<scene sceneID="24Q-ad-dey">
@ -472,42 +472,189 @@
</objects>
<point key="canvasLocation" x="2702.898550724638" y="1047.3214285714284"/>
</scene>
<!--Second-->
<scene sceneID="wg7-f3-ORb">
<!--Account-->
<scene sceneID="mCa-NC-tD9">
<objects>
<viewController id="8rJ-Kc-sve" customClass="SecondViewController" customModule="elpha_ios" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="QS5-Rx-YEW">
<tableViewController id="X5f-Me-0D2" customClass="AccountTableViewController" customModule="elpha_ios" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" allowsSelection="NO" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="BA3-TV-fdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Second View" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" translatesAutoresizingMaskIntoConstraints="NO" id="zEq-FU-wV5">
<rect key="frame" x="106.5" y="426.5" width="201.5" height="43"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<fontDescription key="fontDescription" type="system" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Loaded by SecondViewController" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NDk-cv-Gan">
<rect key="frame" x="99.5" y="477.5" width="215" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="NDk-cv-Gan" firstAttribute="top" secondItem="zEq-FU-wV5" secondAttribute="bottom" constant="8" symbolic="YES" id="Day-4N-Vmt"/>
<constraint firstItem="NDk-cv-Gan" firstAttribute="centerX" secondItem="zEq-FU-wV5" secondAttribute="centerX" id="JgO-Fn-dHn"/>
<constraint firstAttribute="centerX" secondItem="zEq-FU-wV5" secondAttribute="centerX" id="qqM-NS-xev"/>
<constraint firstAttribute="centerY" secondItem="zEq-FU-wV5" secondAttribute="centerY" id="qzY-Ky-pLD"/>
</constraints>
<viewLayoutGuide key="safeArea" id="O1u-W8-tvY"/>
</view>
<tabBarItem key="tabBarItem" title="Second" image="second" id="cPa-gy-q4n"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4Nw-L8-lE0" sceneMemberID="firstResponder"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<view key="tableHeaderView" contentMode="scaleToFill" id="ygB-F6-Moa">
<rect key="frame" x="0.0" y="0.0" width="414" height="408"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="0jO-Rb-lcz">
<rect key="frame" x="0.0" y="-2" width="414" height="200"/>
<constraints>
<constraint firstAttribute="height" constant="200" id="HWQ-9W-TLG"/>
</constraints>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="d7X-u9-Seq">
<rect key="frame" x="172" y="163" width="70" height="70"/>
<constraints>
<constraint firstAttribute="height" constant="70" id="6Ni-kg-YNd"/>
<constraint firstAttribute="width" constant="70" id="ItK-PQ-Zdt"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MGa-Tw-aUj">
<rect key="frame" x="142.5" y="248" width="129.5" height="24"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XET-LP-bGO">
<rect key="frame" x="174" y="277" width="66" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d8Z-vZ-agH">
<rect key="frame" x="20" y="309" width="374" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="a6x-gd-oBT"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="D5v-MR-CuQ">
<rect key="frame" x="20" y="374" width="100" height="14"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Toots" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kTz-EN-Zgx">
<rect key="frame" x="8" y="10" width="84" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Eab-8s-Drh">
<rect key="frame" x="8" y="32.5" width="84" height="24"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="Eab-8s-Drh" secondAttribute="trailing" constant="8" id="5mC-u4-qwS"/>
<constraint firstAttribute="trailing" secondItem="kTz-EN-Zgx" secondAttribute="trailing" constant="8" id="6Dd-wW-L1W"/>
<constraint firstItem="Eab-8s-Drh" firstAttribute="top" secondItem="kTz-EN-Zgx" secondAttribute="bottom" constant="8" id="Aiy-x2-NuW"/>
<constraint firstItem="Eab-8s-Drh" firstAttribute="leading" secondItem="D5v-MR-CuQ" secondAttribute="leading" constant="8" id="Yiw-Ui-WMd"/>
<constraint firstAttribute="width" constant="100" id="b2A-8e-vQr"/>
<constraint firstItem="kTz-EN-Zgx" firstAttribute="leading" secondItem="D5v-MR-CuQ" secondAttribute="leading" constant="8" id="dkF-ab-7du"/>
<constraint firstItem="kTz-EN-Zgx" firstAttribute="top" secondItem="D5v-MR-CuQ" secondAttribute="top" constant="10" id="mLg-bw-Gqg"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TkS-vn-sW3">
<rect key="frame" x="157" y="374" width="100" height="14"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Following" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FxQ-nq-jYw">
<rect key="frame" x="8" y="10" width="84" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l3U-wO-M4g">
<rect key="frame" x="8" y="32.5" width="84" height="24"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="100" id="7Uy-eK-pPB"/>
<constraint firstItem="FxQ-nq-jYw" firstAttribute="top" secondItem="TkS-vn-sW3" secondAttribute="top" constant="10" id="8nY-kC-dnK"/>
<constraint firstAttribute="trailing" secondItem="l3U-wO-M4g" secondAttribute="trailing" constant="8" id="9yP-IG-4TK"/>
<constraint firstItem="l3U-wO-M4g" firstAttribute="top" secondItem="FxQ-nq-jYw" secondAttribute="bottom" constant="8" id="RRv-UW-tu8"/>
<constraint firstAttribute="trailing" secondItem="FxQ-nq-jYw" secondAttribute="trailing" constant="8" id="UgO-jp-c7u"/>
<constraint firstItem="l3U-wO-M4g" firstAttribute="leading" secondItem="TkS-vn-sW3" secondAttribute="leading" constant="8" id="ZDE-tD-YnP"/>
<constraint firstItem="FxQ-nq-jYw" firstAttribute="leading" secondItem="TkS-vn-sW3" secondAttribute="leading" constant="8" id="rtL-RX-lwX"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rqF-sG-ZE7">
<rect key="frame" x="294" y="374" width="100" height="14"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Followers" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="piT-tX-tUe">
<rect key="frame" x="8" y="10" width="84" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="J8H-VZ-dwT">
<rect key="frame" x="8" y="32.5" width="84" height="24"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="J8H-VZ-dwT" secondAttribute="trailing" constant="8" id="1t1-nE-saW"/>
<constraint firstAttribute="trailing" secondItem="piT-tX-tUe" secondAttribute="trailing" constant="8" id="2La-A7-kHB"/>
<constraint firstItem="piT-tX-tUe" firstAttribute="leading" secondItem="rqF-sG-ZE7" secondAttribute="leading" constant="8" id="2cc-DJ-nQb"/>
<constraint firstItem="J8H-VZ-dwT" firstAttribute="leading" secondItem="rqF-sG-ZE7" secondAttribute="leading" constant="8" id="BGa-ZO-3IO"/>
<constraint firstAttribute="width" constant="100" id="D8N-BK-ZSH"/>
<constraint firstItem="J8H-VZ-dwT" firstAttribute="top" secondItem="piT-tX-tUe" secondAttribute="bottom" constant="8" id="Zdh-yX-wjL"/>
<constraint firstItem="piT-tX-tUe" firstAttribute="top" secondItem="rqF-sG-ZE7" secondAttribute="top" constant="10" id="h9M-Od-Xeu"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="0jO-Rb-lcz" firstAttribute="leading" secondItem="ygB-F6-Moa" secondAttribute="leading" id="0Od-Hb-lt5"/>
<constraint firstItem="TkS-vn-sW3" firstAttribute="top" secondItem="d8Z-vZ-agH" secondAttribute="bottom" constant="15" id="1Nv-md-bcK"/>
<constraint firstItem="XET-LP-bGO" firstAttribute="centerX" secondItem="ygB-F6-Moa" secondAttribute="centerX" id="8q3-M6-fle"/>
<constraint firstAttribute="bottom" secondItem="rqF-sG-ZE7" secondAttribute="bottom" constant="20" id="J5e-cr-T32"/>
<constraint firstItem="MGa-Tw-aUj" firstAttribute="centerX" secondItem="ygB-F6-Moa" secondAttribute="centerX" id="Ka8-Yt-VNQ"/>
<constraint firstItem="D5v-MR-CuQ" firstAttribute="leading" secondItem="ygB-F6-Moa" secondAttribute="leading" constant="20" id="Sfb-al-bD3"/>
<constraint firstItem="d8Z-vZ-agH" firstAttribute="top" secondItem="XET-LP-bGO" secondAttribute="bottom" constant="15" id="VdD-Ow-Hbq"/>
<constraint firstItem="0jO-Rb-lcz" firstAttribute="top" secondItem="ygB-F6-Moa" secondAttribute="top" constant="-2" id="avA-XU-Hlb"/>
<constraint firstItem="d7X-u9-Seq" firstAttribute="centerX" secondItem="ygB-F6-Moa" secondAttribute="centerX" id="e6Y-Fv-aMf"/>
<constraint firstItem="d8Z-vZ-agH" firstAttribute="leading" secondItem="ygB-F6-Moa" secondAttribute="leading" constant="20" id="ePh-7B-g27"/>
<constraint firstItem="d7X-u9-Seq" firstAttribute="top" secondItem="0jO-Rb-lcz" secondAttribute="bottom" constant="-35" id="f0s-Vv-mmG"/>
<constraint firstAttribute="bottom" secondItem="D5v-MR-CuQ" secondAttribute="bottom" constant="20" id="ggl-n0-CmE"/>
<constraint firstItem="TkS-vn-sW3" firstAttribute="centerX" secondItem="ygB-F6-Moa" secondAttribute="centerX" id="h25-tL-Eou"/>
<constraint firstItem="XET-LP-bGO" firstAttribute="top" secondItem="MGa-Tw-aUj" secondAttribute="bottom" constant="5" id="h2h-6e-Jzt"/>
<constraint firstAttribute="trailing" secondItem="d8Z-vZ-agH" secondAttribute="trailing" constant="20" id="iaP-Eh-O8n"/>
<constraint firstAttribute="trailing" secondItem="rqF-sG-ZE7" secondAttribute="trailing" constant="20" id="kPD-YC-0bD"/>
<constraint firstItem="D5v-MR-CuQ" firstAttribute="top" secondItem="d8Z-vZ-agH" secondAttribute="bottom" constant="15" id="nm6-TP-Qzj"/>
<constraint firstItem="MGa-Tw-aUj" firstAttribute="top" secondItem="d7X-u9-Seq" secondAttribute="bottom" constant="15" id="o9i-Ys-iwf"/>
<constraint firstAttribute="trailing" secondItem="0jO-Rb-lcz" secondAttribute="trailing" id="qGc-XW-65f"/>
<constraint firstAttribute="bottom" secondItem="TkS-vn-sW3" secondAttribute="bottom" constant="20" id="twi-lv-FYu"/>
<constraint firstItem="rqF-sG-ZE7" firstAttribute="top" secondItem="d8Z-vZ-agH" secondAttribute="bottom" constant="15" id="v9w-nR-6pE"/>
</constraints>
</view>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="AccountTableViewCell" id="nLQ-4Q-SwI">
<rect key="frame" x="0.0" y="436" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="nLQ-4Q-SwI" id="y0d-Ka-W2g">
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="X5f-Me-0D2" id="jcj-kc-HRf"/>
<outlet property="delegate" destination="X5f-Me-0D2" id="Gg1-cw-I9S"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Account" id="5hW-Ep-t5f"/>
<connections>
<outlet property="avatarImageView" destination="d7X-u9-Seq" id="Mt2-60-lb2"/>
<outlet property="contentLabel" destination="d8Z-vZ-agH" id="e0a-ZE-IdC"/>
<outlet property="displayNameLabel" destination="MGa-Tw-aUj" id="5VX-Q3-bkt"/>
<outlet property="followersLabel" destination="J8H-VZ-dwT" id="XiN-FS-Wjw"/>
<outlet property="followingLabel" destination="l3U-wO-M4g" id="N5A-sA-0O1"/>
<outlet property="headerImageView" destination="0jO-Rb-lcz" id="30G-8E-1xD"/>
<outlet property="statusesLabel" destination="Eab-8s-Drh" id="zTr-ZY-uHR"/>
<outlet property="usernameLabel" destination="XET-LP-bGO" id="ffw-On-bkz"/>
</connections>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dWu-5e-ce7" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="750" y="360"/>
<point key="canvasLocation" x="1635" y="360"/>
</scene>
<!--Main Tab Bar Controller-->
<scene sceneID="yl2-sM-qoP">
@ -522,7 +669,7 @@
</tabBar>
<connections>
<segue destination="tkS-C2-D40" kind="relationship" relationship="viewControllers" id="u7Y-xg-7CH"/>
<segue destination="8rJ-Kc-sve" kind="relationship" relationship="viewControllers" id="lzU-1b-eKA"/>
<segue destination="lZk-Km-KQ7" kind="relationship" relationship="viewControllers" id="lzU-1b-eKA"/>
<segue destination="Bed-pj-wE9" kind="presentation" identifier="AuthenticateSegue" id="OY3-ks-sfC"/>
</connections>
</tabBarController>
@ -530,34 +677,6 @@
</objects>
<point key="canvasLocation" x="0.0" y="0.0"/>
</scene>
<!--Table View Controller-->
<scene sceneID="xaH-fS-tqR">
<objects>
<tableViewController id="tj3-Qd-mF6" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="O6N-C9-KlT">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="FJu-OY-Oh3">
<rect key="frame" x="0.0" y="28" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="FJu-OY-Oh3" id="Cgh-z5-gL3">
<rect key="frame" x="0.0" y="0.0" width="414" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<connections>
<outlet property="dataSource" destination="tj3-Qd-mF6" id="TeQ-vs-0qB"/>
<outlet property="delegate" destination="tj3-Qd-mF6" id="qLd-Yg-iTR"/>
</connections>
</tableView>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="TpN-6y-NY1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1635" y="-992"/>
</scene>
<!--Timelines-->
<scene sceneID="6LG-kd-yOU">
<objects>
@ -594,454 +713,27 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="TimelineTableViewCell" rowHeight="500" id="ltf-IW-WJt" customClass="TimelineTableViewCell" customModule="elpha_ios" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="414" height="500"/>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="TimelineTableViewCell" id="ltf-IW-WJt" customClass="TimelineTableViewCell" customModule="elpha_ios" customModuleProvider="target">
<rect key="frame" x="0.0" y="28" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="ltf-IW-WJt" id="n6I-gD-BmS">
<rect key="frame" x="0.0" y="0.0" width="414" height="500"/>
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="Bk1-Te-ST5">
<rect key="frame" x="0.0" y="0.0" width="414" height="500"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Fb6-oy-z8M">
<rect key="frame" x="0.0" y="0.0" width="414" height="5"/>
<color key="backgroundColor" red="0.93725490196078431" green="0.93725490196078431" blue="0.93725490196078431" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="LVZ-HF-tZa"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7fe-eL-1qu">
<rect key="frame" x="0.0" y="5" width="414" height="50"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7J1-mc-hnw">
<rect key="frame" x="167" y="11" width="80" height="28"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Up" translatesAutoresizingMaskIntoConstraints="NO" id="Ocy-VU-QZn">
<rect key="frame" x="34" y="0.0" width="12" height="6"/>
<color key="tintColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="nhn-ZW-gRV"/>
<constraint firstAttribute="height" constant="6" id="uHN-OE-47w"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Load More" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gR6-aN-8MJ">
<rect key="frame" x="8" y="11" width="64" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="gR6-aN-8MJ" secondAttribute="trailing" constant="8" id="1wK-Xh-mFV"/>
<constraint firstAttribute="height" constant="28" id="JZl-g3-X1b"/>
<constraint firstItem="gR6-aN-8MJ" firstAttribute="top" secondItem="Ocy-VU-QZn" secondAttribute="bottom" constant="5" id="Rm1-BO-h2h"/>
<constraint firstAttribute="width" constant="80" id="Xo7-eO-J8c"/>
<constraint firstItem="Ocy-VU-QZn" firstAttribute="centerX" secondItem="7J1-mc-hnw" secondAttribute="centerX" id="eMd-5V-6pj"/>
<constraint firstItem="gR6-aN-8MJ" firstAttribute="leading" secondItem="7J1-mc-hnw" secondAttribute="leading" constant="8" id="v1k-O7-qRw"/>
<constraint firstItem="Ocy-VU-QZn" firstAttribute="top" secondItem="7J1-mc-hnw" secondAttribute="top" id="zNa-bM-7n8"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="6ie-d5-Mbg"/>
<constraint firstItem="7J1-mc-hnw" firstAttribute="centerY" secondItem="7fe-eL-1qu" secondAttribute="centerY" id="C8Z-WH-lg3"/>
<constraint firstItem="7J1-mc-hnw" firstAttribute="centerX" secondItem="7fe-eL-1qu" secondAttribute="centerX" id="QQr-tW-cHV"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9fS-a9-pwm">
<rect key="frame" x="0.0" y="55" width="414" height="100"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ocT-ux-M2p">
<rect key="frame" x="8" y="18" width="40" height="40"/>
<constraints>
<constraint firstAttribute="width" constant="40" id="FOT-Id-1ck"/>
<constraint firstAttribute="height" constant="40" id="hZI-kx-4rP"/>
</constraints>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boost Regular" translatesAutoresizingMaskIntoConstraints="NO" id="IKt-wC-rQf">
<rect key="frame" x="56" y="60" width="12" height="16"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="iEj-7l-ylL"/>
<constraint firstAttribute="height" constant="16" id="pWe-WP-xba"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ukb-MJ-igh">
<rect key="frame" x="56" y="18" width="350" height="18"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dvA-pE-bQJ">
<rect key="frame" x="56" y="40" width="350" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8DN-mV-NXI">
<rect key="frame" x="20" y="93" width="374" height="2"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="dA1-jU-Sbe"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Boosted" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gXx-Tg-gLN">
<rect key="frame" x="76" y="60" width="330" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="IKt-wC-rQf" firstAttribute="leading" secondItem="dvA-pE-bQJ" secondAttribute="leading" id="1Px-vS-dOJ"/>
<constraint firstItem="dvA-pE-bQJ" firstAttribute="leading" secondItem="ocT-ux-M2p" secondAttribute="trailing" constant="8" id="49y-Or-GyX"/>
<constraint firstAttribute="trailing" secondItem="dvA-pE-bQJ" secondAttribute="trailing" constant="8" id="63r-BG-9nt"/>
<constraint firstItem="gXx-Tg-gLN" firstAttribute="top" secondItem="dvA-pE-bQJ" secondAttribute="bottom" constant="4" id="8vA-Cq-EED"/>
<constraint firstAttribute="height" constant="100" id="AsD-s0-pkq"/>
<constraint firstItem="ocT-ux-M2p" firstAttribute="top" secondItem="9fS-a9-pwm" secondAttribute="top" constant="18" id="Bvi-2N-0r3"/>
<constraint firstItem="dvA-pE-bQJ" firstAttribute="top" secondItem="ukb-MJ-igh" secondAttribute="bottom" constant="4" id="CTi-We-t02"/>
<constraint firstItem="ocT-ux-M2p" firstAttribute="leading" secondItem="9fS-a9-pwm" secondAttribute="leading" constant="8" id="HwA-0T-yqS"/>
<constraint firstAttribute="bottom" secondItem="8DN-mV-NXI" secondAttribute="bottom" constant="5" id="KHL-w9-61f"/>
<constraint firstItem="ukb-MJ-igh" firstAttribute="top" secondItem="9fS-a9-pwm" secondAttribute="top" constant="18" id="ZGu-Y9-Izj"/>
<constraint firstItem="gXx-Tg-gLN" firstAttribute="leading" secondItem="IKt-wC-rQf" secondAttribute="trailing" constant="8" id="avD-BX-C95"/>
<constraint firstItem="8DN-mV-NXI" firstAttribute="leading" secondItem="9fS-a9-pwm" secondAttribute="leading" constant="20" id="eTl-sX-JY6"/>
<constraint firstAttribute="trailing" secondItem="ukb-MJ-igh" secondAttribute="trailing" constant="8" id="ei1-BR-nem"/>
<constraint firstItem="IKt-wC-rQf" firstAttribute="top" secondItem="dvA-pE-bQJ" secondAttribute="bottom" constant="4" id="fMa-hv-fSt"/>
<constraint firstItem="ukb-MJ-igh" firstAttribute="leading" secondItem="ocT-ux-M2p" secondAttribute="trailing" constant="8" id="hDb-E4-iJq"/>
<constraint firstAttribute="trailing" secondItem="gXx-Tg-gLN" secondAttribute="trailing" constant="8" id="poS-0e-gtx"/>
<constraint firstAttribute="trailing" secondItem="8DN-mV-NXI" secondAttribute="trailing" constant="20" id="soR-hM-eq3"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="xpm-gm-QTe">
<rect key="frame" x="0.0" y="155" width="414" height="100"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Z85-Y0-P4Y">
<rect key="frame" x="8" y="18" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="iUg-5Z-Frr"/>
<constraint firstAttribute="width" constant="40" id="jVE-Dv-15H"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="In reply to" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BX6-Js-Nhi">
<rect key="frame" x="76" y="18" width="330" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Message" translatesAutoresizingMaskIntoConstraints="NO" id="o2s-le-wFQ">
<rect key="frame" x="56" y="20" width="12" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="Ojf-mK-U2A"/>
<constraint firstAttribute="width" constant="12" id="a7d-f5-sju"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Spo-Jx-UQY">
<rect key="frame" x="56" y="36.5" width="350" height="18"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4Gf-aV-jSP">
<rect key="frame" x="20" y="93" width="374" height="2"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="lPl-ql-kES"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vCq-bh-CMA">
<rect key="frame" x="56" y="58.5" width="350" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="BX6-Js-Nhi" firstAttribute="top" secondItem="xpm-gm-QTe" secondAttribute="top" constant="18" id="1jk-D3-Bsh"/>
<constraint firstAttribute="height" constant="100" id="3ZW-GL-Mj5"/>
<constraint firstAttribute="trailing" secondItem="BX6-Js-Nhi" secondAttribute="trailing" constant="8" id="3oB-JJ-IKK"/>
<constraint firstItem="Spo-Jx-UQY" firstAttribute="leading" secondItem="Z85-Y0-P4Y" secondAttribute="trailing" constant="8" id="5l7-bV-uJQ"/>
<constraint firstItem="o2s-le-wFQ" firstAttribute="top" secondItem="xpm-gm-QTe" secondAttribute="top" constant="20" id="7BG-C0-w5O"/>
<constraint firstItem="Z85-Y0-P4Y" firstAttribute="leading" secondItem="xpm-gm-QTe" secondAttribute="leading" constant="8" id="B1J-au-QNS"/>
<constraint firstItem="4Gf-aV-jSP" firstAttribute="leading" secondItem="xpm-gm-QTe" secondAttribute="leading" constant="20" id="OaZ-lQ-DRF"/>
<constraint firstItem="BX6-Js-Nhi" firstAttribute="leading" secondItem="o2s-le-wFQ" secondAttribute="trailing" constant="8" id="QVG-2z-RBl"/>
<constraint firstAttribute="trailing" secondItem="4Gf-aV-jSP" secondAttribute="trailing" constant="20" id="alp-MQ-dTO"/>
<constraint firstItem="vCq-bh-CMA" firstAttribute="leading" secondItem="Spo-Jx-UQY" secondAttribute="leading" id="biR-A0-SVf"/>
<constraint firstItem="vCq-bh-CMA" firstAttribute="top" secondItem="Spo-Jx-UQY" secondAttribute="bottom" constant="4" id="c8u-6u-7Kf"/>
<constraint firstAttribute="bottom" secondItem="4Gf-aV-jSP" secondAttribute="bottom" constant="5" id="dJh-Ld-Doo"/>
<constraint firstAttribute="trailing" secondItem="Spo-Jx-UQY" secondAttribute="trailing" constant="8" id="gUP-f8-pTQ"/>
<constraint firstItem="Spo-Jx-UQY" firstAttribute="top" secondItem="BX6-Js-Nhi" secondAttribute="bottom" constant="4" id="rdh-yu-BHe"/>
<constraint firstItem="Z85-Y0-P4Y" firstAttribute="top" secondItem="xpm-gm-QTe" secondAttribute="top" constant="18" id="sz1-t1-hxY"/>
<constraint firstAttribute="trailing" secondItem="vCq-bh-CMA" secondAttribute="trailing" constant="8" id="ubk-dy-tO8"/>
<constraint firstItem="o2s-le-wFQ" firstAttribute="leading" secondItem="Z85-Y0-P4Y" secondAttribute="trailing" constant="8" id="weK-2y-Ycg"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="OwU-e4-gmT">
<rect key="frame" x="0.0" y="255" width="414" height="129"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="AOi-ot-xXa">
<rect key="frame" x="8" y="18" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="3lv-lh-lug"/>
<constraint firstAttribute="width" constant="45" id="hII-wY-bcl"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nsu-8a-xsG">
<rect key="frame" x="61" y="18" width="345" height="20.5"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dvJ-7r-JOr">
<rect key="frame" x="61" y="40.5" width="345" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="249" text="Content" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VmZ-Cs-XbK">
<rect key="frame" x="8" y="78" width="398" height="43"/>
<constraints>
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="20" id="THV-62-aTc"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="VmZ-Cs-XbK" secondAttribute="trailing" constant="8" id="32g-8R-k8N"/>
<constraint firstItem="dvJ-7r-JOr" firstAttribute="top" secondItem="Nsu-8a-xsG" secondAttribute="bottom" constant="2" id="KVY-bN-5l0"/>
<constraint firstItem="Nsu-8a-xsG" firstAttribute="top" secondItem="OwU-e4-gmT" secondAttribute="top" constant="18" id="TNR-QZ-3f8"/>
<constraint firstAttribute="trailing" secondItem="Nsu-8a-xsG" secondAttribute="trailing" constant="8" id="URL-d0-869"/>
<constraint firstItem="AOi-ot-xXa" firstAttribute="top" secondItem="OwU-e4-gmT" secondAttribute="top" constant="18" id="VZr-nm-9C5"/>
<constraint firstAttribute="bottom" secondItem="VmZ-Cs-XbK" secondAttribute="bottom" constant="8" id="Vse-j3-LX3"/>
<constraint firstItem="VmZ-Cs-XbK" firstAttribute="leading" secondItem="OwU-e4-gmT" secondAttribute="leading" constant="8" id="awE-TQ-TF0"/>
<constraint firstItem="AOi-ot-xXa" firstAttribute="leading" secondItem="OwU-e4-gmT" secondAttribute="leading" constant="8" id="dZ3-VC-SPP"/>
<constraint firstItem="Nsu-8a-xsG" firstAttribute="leading" secondItem="AOi-ot-xXa" secondAttribute="trailing" constant="8" id="iZn-vn-Xtt"/>
<constraint firstItem="VmZ-Cs-XbK" firstAttribute="top" secondItem="AOi-ot-xXa" secondAttribute="bottom" constant="15" id="kni-Ko-qpY"/>
<constraint firstItem="dvJ-7r-JOr" firstAttribute="leading" secondItem="AOi-ot-xXa" secondAttribute="trailing" constant="8" id="oyQ-0e-9qz"/>
<constraint firstAttribute="trailing" secondItem="dvJ-7r-JOr" secondAttribute="trailing" constant="8" id="u1Y-8l-2XB"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="k2r-TR-ccp">
<rect key="frame" x="0.0" y="384" width="414" height="1"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="9AE-Ni-UAO"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BxY-Mp-TeI">
<rect key="frame" x="0.0" y="385" width="414" height="60"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pGF-ol-Wqu">
<rect key="frame" x="8" y="15" width="194" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Timestamp" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="g0I-Zp-Y9h">
<rect key="frame" x="20" y="7" width="166" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Clock" translatesAutoresizingMaskIntoConstraints="NO" id="aeb-vM-xuk">
<rect key="frame" x="0.0" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="1J8-hQ-jsb"/>
<constraint firstAttribute="width" constant="15" id="MYc-OS-HyA"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="6cC-Bm-dsh"/>
<constraint firstItem="g0I-Zp-Y9h" firstAttribute="centerY" secondItem="pGF-ol-Wqu" secondAttribute="centerY" id="XeP-2L-8Gi"/>
<constraint firstItem="aeb-vM-xuk" firstAttribute="leading" secondItem="pGF-ol-Wqu" secondAttribute="leading" id="Y9E-Kd-bFD"/>
<constraint firstItem="g0I-Zp-Y9h" firstAttribute="leading" secondItem="aeb-vM-xuk" secondAttribute="trailing" constant="5" id="ZrB-fL-WyG"/>
<constraint firstAttribute="trailing" secondItem="g0I-Zp-Y9h" secondAttribute="trailing" constant="8" id="cXG-gt-wOb"/>
<constraint firstItem="aeb-vM-xuk" firstAttribute="centerY" secondItem="pGF-ol-Wqu" secondAttribute="centerY" id="j3V-yK-fuP"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZOn-0n-hPZ">
<rect key="frame" x="346" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Jfd-Nt-QbG">
<rect key="frame" x="28" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star Regular" translatesAutoresizingMaskIntoConstraints="NO" id="fYQ-Zp-0Sm">
<rect key="frame" x="5" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="ChY-1e-ldQ"/>
<constraint firstAttribute="width" constant="15" id="Mqw-bX-FDD"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Jfd-Nt-QbG" firstAttribute="leading" secondItem="fYQ-Zp-0Sm" secondAttribute="trailing" constant="8" id="3fk-gy-wS8"/>
<constraint firstAttribute="height" constant="30" id="7Xv-qF-vRd"/>
<constraint firstAttribute="trailing" secondItem="Jfd-Nt-QbG" secondAttribute="trailing" constant="8" id="9ys-Xj-tDz"/>
<constraint firstItem="Jfd-Nt-QbG" firstAttribute="centerY" secondItem="ZOn-0n-hPZ" secondAttribute="centerY" id="G8V-yt-pEb"/>
<constraint firstItem="fYQ-Zp-0Sm" firstAttribute="centerY" secondItem="ZOn-0n-hPZ" secondAttribute="centerY" id="cpM-gC-wX2"/>
<constraint firstAttribute="width" constant="60" id="cvA-sB-o7w"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dbI-17-JiR">
<rect key="frame" x="278" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jbL-pa-f8U">
<rect key="frame" x="36" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boost Regular" translatesAutoresizingMaskIntoConstraints="NO" id="6nH-wa-zK5">
<rect key="frame" x="14" y="6" width="14" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="14" id="1AH-Bj-6b5"/>
<constraint firstAttribute="height" constant="18" id="cZg-wp-aLM"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="6nH-wa-zK5" firstAttribute="centerY" secondItem="dbI-17-JiR" secondAttribute="centerY" id="1nD-1h-wub"/>
<constraint firstAttribute="width" constant="60" id="9N4-hp-MnN"/>
<constraint firstAttribute="height" constant="30" id="CpC-Xa-DaS"/>
<constraint firstAttribute="trailing" secondItem="jbL-pa-f8U" secondAttribute="trailing" id="dHR-zf-kOZ"/>
<constraint firstItem="jbL-pa-f8U" firstAttribute="centerY" secondItem="dbI-17-JiR" secondAttribute="centerY" id="kkF-Hj-kir"/>
<constraint firstItem="jbL-pa-f8U" firstAttribute="leading" secondItem="6nH-wa-zK5" secondAttribute="trailing" constant="8" id="vrc-QW-nJv"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IsJ-nH-idi">
<rect key="frame" x="210" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WWx-tD-ydV">
<rect key="frame" x="36" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Message" translatesAutoresizingMaskIntoConstraints="NO" id="BaX-Vk-itT">
<rect key="frame" x="13" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="DpY-ZJ-e9f"/>
<constraint firstAttribute="width" constant="15" id="qQ7-Ih-KmL"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="WWx-tD-ydV" firstAttribute="centerY" secondItem="IsJ-nH-idi" secondAttribute="centerY" id="BvB-ss-NW2"/>
<constraint firstAttribute="width" constant="60" id="RrM-ce-exD"/>
<constraint firstAttribute="height" constant="30" id="nC6-Ld-bVM"/>
<constraint firstItem="WWx-tD-ydV" firstAttribute="leading" secondItem="BaX-Vk-itT" secondAttribute="trailing" constant="8" id="oW1-Ts-3lY"/>
<constraint firstAttribute="trailing" secondItem="WWx-tD-ydV" secondAttribute="trailing" id="rzF-o6-kIn"/>
<constraint firstItem="BaX-Vk-itT" firstAttribute="centerY" secondItem="IsJ-nH-idi" secondAttribute="centerY" id="xlm-en-NCW"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="dbI-17-JiR" firstAttribute="centerY" secondItem="BxY-Mp-TeI" secondAttribute="centerY" id="00G-d4-H5e"/>
<constraint firstAttribute="trailing" secondItem="ZOn-0n-hPZ" secondAttribute="trailing" constant="8" id="0h7-8C-X31"/>
<constraint firstItem="IsJ-nH-idi" firstAttribute="leading" secondItem="pGF-ol-Wqu" secondAttribute="trailing" constant="8" id="4X9-uT-pt2"/>
<constraint firstItem="ZOn-0n-hPZ" firstAttribute="leading" secondItem="dbI-17-JiR" secondAttribute="trailing" constant="8" id="JZw-NX-gP8"/>
<constraint firstAttribute="height" constant="60" id="L3p-DT-fAd"/>
<constraint firstItem="pGF-ol-Wqu" firstAttribute="leading" secondItem="BxY-Mp-TeI" secondAttribute="leading" constant="8" id="Msj-vp-7Gn"/>
<constraint firstItem="pGF-ol-Wqu" firstAttribute="centerY" secondItem="BxY-Mp-TeI" secondAttribute="centerY" id="dca-Oo-My0"/>
<constraint firstItem="ZOn-0n-hPZ" firstAttribute="centerY" secondItem="BxY-Mp-TeI" secondAttribute="centerY" id="fO1-B4-Yxd"/>
<constraint firstItem="dbI-17-JiR" firstAttribute="leading" secondItem="IsJ-nH-idi" secondAttribute="trailing" constant="8" id="qAB-2q-VwD"/>
<constraint firstItem="IsJ-nH-idi" firstAttribute="centerY" secondItem="BxY-Mp-TeI" secondAttribute="centerY" id="sDz-Pu-Sbd"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1pv-7u-4nG">
<rect key="frame" x="0.0" y="445" width="414" height="50"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="h6S-BG-PFa">
<rect key="frame" x="167" y="11" width="80" height="28"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Down" translatesAutoresizingMaskIntoConstraints="NO" id="tk1-p1-u0D">
<rect key="frame" x="34" y="22" width="12" height="6"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="fWG-Sr-I1H"/>
<constraint firstAttribute="height" constant="6" id="pmJ-FG-qTv"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Load More" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iH0-8P-Kth">
<rect key="frame" x="8" y="2.5" width="64" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="iH0-8P-Kth" firstAttribute="leading" secondItem="h6S-BG-PFa" secondAttribute="leading" constant="8" id="BhX-G8-ZHa"/>
<constraint firstItem="tk1-p1-u0D" firstAttribute="top" secondItem="iH0-8P-Kth" secondAttribute="bottom" constant="5" id="I1U-mK-4ig"/>
<constraint firstItem="tk1-p1-u0D" firstAttribute="centerX" secondItem="h6S-BG-PFa" secondAttribute="centerX" id="R4V-4U-S3Q"/>
<constraint firstAttribute="width" constant="80" id="cHv-vY-jyT"/>
<constraint firstAttribute="bottom" secondItem="tk1-p1-u0D" secondAttribute="bottom" id="iko-df-3hi"/>
<constraint firstAttribute="trailing" secondItem="iH0-8P-Kth" secondAttribute="trailing" constant="8" id="wcW-i2-31a"/>
<constraint firstAttribute="height" constant="28" id="yCg-xM-EUn"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="4Tp-H0-5C6"/>
<constraint firstItem="h6S-BG-PFa" firstAttribute="centerX" secondItem="1pv-7u-4nG" secondAttribute="centerX" id="Hjm-vc-SbQ"/>
<constraint firstItem="h6S-BG-PFa" firstAttribute="centerY" secondItem="1pv-7u-4nG" secondAttribute="centerY" id="Vwj-uE-lzL"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eS7-7y-Xkh">
<rect key="frame" x="0.0" y="495" width="414" height="5"/>
<color key="backgroundColor" red="0.93725490196078431" green="0.93725490196078431" blue="0.93725490196078431" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="04g-oC-yxr"/>
</constraints>
</view>
</subviews>
</stackView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="7lS-OI-rcY" customClass="StatusView" customModule="elpha_ios" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="414" height="44"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="Bk1-Te-ST5" secondAttribute="bottom" id="abo-o1-E85"/>
<constraint firstItem="Bk1-Te-ST5" firstAttribute="top" secondItem="n6I-gD-BmS" secondAttribute="top" id="fz7-6e-e0b"/>
<constraint firstItem="Bk1-Te-ST5" firstAttribute="leading" secondItem="n6I-gD-BmS" secondAttribute="leading" id="lY9-mG-lrz"/>
<constraint firstAttribute="trailing" secondItem="Bk1-Te-ST5" secondAttribute="trailing" id="nFp-aj-8Gd"/>
<constraint firstItem="7lS-OI-rcY" firstAttribute="bottom" secondItem="n6I-gD-BmS" secondAttribute="bottom" id="MBb-5f-jVp"/>
<constraint firstItem="7lS-OI-rcY" firstAttribute="trailing" secondItem="n6I-gD-BmS" secondAttribute="trailing" id="Uf0-C8-XAd"/>
<constraint firstItem="7lS-OI-rcY" firstAttribute="leading" secondItem="n6I-gD-BmS" secondAttribute="leading" id="Xhs-qs-JV7"/>
<constraint firstItem="7lS-OI-rcY" firstAttribute="top" secondItem="n6I-gD-BmS" secondAttribute="top" id="gcm-4L-xDF"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="attachmentsHeightConstraint" destination="9AE-Ni-UAO" id="5re-Uh-VwW"/>
<outlet property="attachmentsView" destination="k2r-TR-ccp" id="9gH-U6-mey"/>
<outlet property="avatarImageView" destination="AOi-ot-xXa" id="4Z4-8h-dAo"/>
<outlet property="boostAvatarImageView" destination="ocT-ux-M2p" id="Vfi-vL-ttC"/>
<outlet property="boostDisplayNameLabel" destination="ukb-MJ-igh" id="Ps1-Wf-C1x"/>
<outlet property="boostUsernameLabel" destination="dvA-pE-bQJ" id="cEd-Gg-bvd"/>
<outlet property="boostView" destination="9fS-a9-pwm" id="ffV-XI-YoW"/>
<outlet property="boostsImageView" destination="6nH-wa-zK5" id="9iA-Ej-ahu"/>
<outlet property="boostsLabel" destination="jbL-pa-f8U" id="oe3-Fs-Sdz"/>
<outlet property="bottomDividerView" destination="eS7-7y-Xkh" id="oVJ-VK-RhI"/>
<outlet property="bottomLoadMoreView" destination="1pv-7u-4nG" id="nUZ-gi-RCB"/>
<outlet property="contentLabel" destination="VmZ-Cs-XbK" id="rX1-BF-rFB"/>
<outlet property="displayNameLabel" destination="Nsu-8a-xsG" id="1yz-dB-XXO"/>
<outlet property="favoritesImageView" destination="fYQ-Zp-0Sm" id="iWD-IB-X6F"/>
<outlet property="favoritesLabel" destination="Jfd-Nt-QbG" id="3uy-Ds-RZo"/>
<outlet property="repliesImageView" destination="BaX-Vk-itT" id="CIw-BJ-kVK"/>
<outlet property="repliesLabel" destination="WWx-tD-ydV" id="Srz-rn-OsA"/>
<outlet property="replyAvatarImageView" destination="Z85-Y0-P4Y" id="xl1-aj-fXb"/>
<outlet property="replyDisplayNameLabel" destination="Spo-Jx-UQY" id="Iow-hF-IMu"/>
<outlet property="replyUsernameLabel" destination="vCq-bh-CMA" id="3Gq-8X-qdU"/>
<outlet property="replyView" destination="xpm-gm-QTe" id="wD0-44-sSG"/>
<outlet property="timestampLabel" destination="g0I-Zp-Y9h" id="8eD-tt-0FB"/>
<outlet property="topDividerView" destination="Fb6-oy-z8M" id="5Oj-26-s7B"/>
<outlet property="topLoadMoreView" destination="7fe-eL-1qu" id="UyI-0q-WLR"/>
<outlet property="usernameLabel" destination="dvJ-7r-JOr" id="XQc-R6-4gD"/>
<outlet property="statusView" destination="7lS-OI-rcY" id="2xb-2d-ZQP"/>
</connections>
</tableViewCell>
</prototypes>
@ -1087,18 +779,32 @@
</objects>
<point key="canvasLocation" x="1034.7826086956522" y="1047.9910714285713"/>
</scene>
<!--Account-->
<scene sceneID="7xU-Ns-Wf3">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="lZk-Km-KQ7" sceneMemberID="viewController">
<tabBarItem key="tabBarItem" title="Account" image="Account" id="cPa-gy-q4n"/>
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" largeTitles="YES" id="5mb-Wh-DRp">
<rect key="frame" x="0.0" y="44" width="414" height="96"/>
<autoresizingMask key="autoresizingMask"/>
<color key="barTintColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="X5f-Me-0D2" kind="relationship" relationship="rootViewController" id="dNr-cY-jXE"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="afp-al-BvF" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="749.27536231884062" y="359.59821428571428"/>
</scene>
</scenes>
<resources>
<image name="Boost Regular" width="20" height="24"/>
<image name="Clock" width="22" height="22"/>
<image name="Down" width="14" height="8"/>
<image name="Account" width="25" height="25"/>
<image name="Globe" width="25" height="25"/>
<image name="Instance Placeholder" width="135" height="135"/>
<image name="Logo" width="400" height="400"/>
<image name="Message" width="20" height="20"/>
<image name="Star Regular" width="22" height="22"/>
<image name="Timelines" width="25" height="25"/>
<image name="Up" width="14" height="8"/>
<image name="second" width="30" height="30"/>
</resources>
</document>

13
elpha-ios/NewStatusesView.swift

@ -14,15 +14,15 @@ import UIKit
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
setup()
}
private func commonInit() {
private func setup() {
Bundle.main.loadNibNamed("NewStatusesView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
@ -30,6 +30,11 @@ import UIKit
}
public func setCount(_ count: Int) {
mainLabel.text = "\(count) New Toots"
switch count {
case 1:
mainLabel.text = "1 New Toot"
default:
mainLabel.text = "\(count) New Toots"
}
}
}

18
elpha-ios/NewStatusesView.xib

@ -21,16 +21,25 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="New Toots" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uLF-4h-Bxo">
<rect key="frame" x="8" y="79.5" width="359" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<rect key="frame" x="55" y="81.5" width="312" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Comments" translatesAutoresizingMaskIntoConstraints="NO" id="clq-3k-X29">
<rect key="frame" x="20" y="80" width="25" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="25" id="GaN-Tw-djA"/>
<constraint firstAttribute="height" constant="20" id="zWc-Bw-7lB"/>
</constraints>
</imageView>
</subviews>
<constraints>
<constraint firstItem="uLF-4h-Bxo" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="8" id="Ojm-wu-q8j"/>
<constraint firstItem="clq-3k-X29" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" constant="20" id="5fg-xq-NZI"/>
<constraint firstItem="vUN-kp-3ea" firstAttribute="trailing" secondItem="uLF-4h-Bxo" secondAttribute="trailing" constant="8" id="UuS-UO-ukK"/>
<constraint firstItem="uLF-4h-Bxo" firstAttribute="leading" secondItem="clq-3k-X29" secondAttribute="trailing" constant="10" id="hOP-eE-NMl"/>
<constraint firstItem="uLF-4h-Bxo" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="hld-30-Yt0"/>
<constraint firstItem="clq-3k-X29" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="r75-vt-dSG"/>
</constraints>
<nil key="simulatedTopBarMetrics"/>
<nil key="simulatedBottomBarMetrics"/>
@ -39,4 +48,7 @@
<point key="canvasLocation" x="-574" y="-232"/>
</view>
</objects>
<resources>
<image name="Comments" width="25" height="20"/>
</resources>
</document>

55
elpha-ios/StatusView.swift

@ -0,0 +1,55 @@
//
// StatusStackView.swift
// elpha-ios
//
// Created by Dwayne Harris on 10/9/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import UIKit
class StatusView: UIView {
@IBOutlet var contentView: UIView!
@IBOutlet var boostView: UIView!
@IBOutlet var boostAvatarImageView: UIImageView!
@IBOutlet var boostDisplayNameLabel: UILabel!
@IBOutlet var boostUsernameLabel: UILabel!
@IBOutlet var replyView: UIView!
@IBOutlet var replyAvatarImageView: UIImageView!
@IBOutlet var replyDisplayNameLabel: UILabel!
@IBOutlet var replyUsernameLabel: UILabel!
@IBOutlet var avatarImageView: UIImageView!
@IBOutlet var displayNameLabel: UILabel!
@IBOutlet var usernameLabel: UILabel!
@IBOutlet var contentLabel: UILabel!
@IBOutlet var timestampLabel: UILabel!
@IBOutlet var repliesImageView: UIImageView!
@IBOutlet var repliesLabel: UILabel!
@IBOutlet var boostsImageView: UIImageView!
@IBOutlet var boostsLabel: UILabel!
@IBOutlet var favoritesImageView: UIImageView!
@IBOutlet var favoritesLabel: UILabel!
@IBOutlet var topDividerView: UIView!
@IBOutlet var topLoadMoreView: UIView!
@IBOutlet var bottomDividerView: UIView!
@IBOutlet var bottomLoadMoreView: UIView!
@IBOutlet var attachmentsView: UIView!
@IBOutlet var attachmentsHeightConstraint: NSLayoutConstraint!
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup() {
Bundle.main.loadNibNamed("StatusView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
}
}

473
elpha-ios/StatusView.xib

@ -0,0 +1,473 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="StatusView" customModule="elpha_ios" customModuleProvider="target">
<connections>
<outlet property="attachmentsHeightConstraint" destination="nbr-i2-Chb" id="osy-bg-2Ny"/>
<outlet property="attachmentsView" destination="XuS-iF-YYL" id="HFB-cz-e3h"/>
<outlet property="avatarImageView" destination="TG6-9M-llp" id="01I-Lj-LAR"/>
<outlet property="boostAvatarImageView" destination="ecc-6t-6K0" id="Z09-BM-AEA"/>
<outlet property="boostDisplayNameLabel" destination="kjf-lJ-8Md" id="bR3-bE-zsa"/>
<outlet property="boostUsernameLabel" destination="PKb-3W-PjE" id="QvB-ol-0mf"/>
<outlet property="boostView" destination="Gnt-jG-tVj" id="vjA-8h-ARK"/>
<outlet property="boostsImageView" destination="wns-8Z-i60" id="pPf-qQ-T2A"/>
<outlet property="boostsLabel" destination="rq6-p2-tL4" id="Osw-F4-eLa"/>
<outlet property="bottomDividerView" destination="m4t-ve-E78" id="fEE-Uh-2qq"/>
<outlet property="bottomLoadMoreView" destination="QYs-Yp-yiP" id="yld-0E-FMm"/>
<outlet property="contentLabel" destination="WPF-Oe-N2r" id="Gw6-2e-SDE"/>
<outlet property="contentView" destination="iN0-l3-epB" id="BBM-O7-PHb"/>
<outlet property="displayNameLabel" destination="Tdt-bM-8kr" id="bgA-t1-MWi"/>
<outlet property="favoritesImageView" destination="EID-tt-v32" id="nxH-Fm-sb8"/>
<outlet property="favoritesLabel" destination="MHw-QN-ZwH" id="cNY-nH-fIO"/>
<outlet property="repliesImageView" destination="mRG-vF-1Ur" id="zW6-NU-fvW"/>
<outlet property="repliesLabel" destination="Uog-Tq-elS" id="5MJ-OP-hYF"/>
<outlet property="replyAvatarImageView" destination="wte-HK-KxR" id="V4R-bQ-RUa"/>
<outlet property="replyDisplayNameLabel" destination="nfb-4h-YH9" id="Sqp-dR-U0N"/>
<outlet property="replyUsernameLabel" destination="odK-vM-y2x" id="HC4-1Q-aSP"/>
<outlet property="replyView" destination="v8x-tf-zFb" id="MkC-Dz-5Cw"/>
<outlet property="timestampLabel" destination="8et-mR-yd2" id="VW6-9b-k6T"/>
<outlet property="topDividerView" destination="bg1-Q4-Ru5" id="hCA-Qw-9OZ"/>
<outlet property="topLoadMoreView" destination="Xil-Cx-e0H" id="K1N-Ka-znn"/>
<outlet property="usernameLabel" destination="OR8-xh-j0I" id="Bq4-9u-fCu"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="7Og-IU-seR">
<rect key="frame" x="0.0" y="20" width="375" height="647"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bg1-Q4-Ru5">
<rect key="frame" x="0.0" y="0.0" width="375" height="5"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.93725490199999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="hYF-M2-gmn"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xil-Cx-e0H">
<rect key="frame" x="0.0" y="5" width="375" height="50"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qhn-Dl-SDM">
<rect key="frame" x="147.5" y="11" width="80" height="28"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Up" translatesAutoresizingMaskIntoConstraints="NO" id="x0J-mB-UXx">
<rect key="frame" x="34" y="0.0" width="12" height="6"/>
<color key="tintColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="bcZ-GQ-xjA"/>
<constraint firstAttribute="height" constant="6" id="uNo-fj-xZ1"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Load More" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yOu-NJ-JuL">
<rect key="frame" x="8" y="11" width="64" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="yOu-NJ-JuL" firstAttribute="leading" secondItem="qhn-Dl-SDM" secondAttribute="leading" constant="8" id="Bbr-F7-8hh"/>
<constraint firstItem="x0J-mB-UXx" firstAttribute="centerX" secondItem="qhn-Dl-SDM" secondAttribute="centerX" id="EbK-JL-tOK"/>
<constraint firstItem="x0J-mB-UXx" firstAttribute="top" secondItem="qhn-Dl-SDM" secondAttribute="top" id="IcL-92-hzI"/>
<constraint firstAttribute="trailing" secondItem="yOu-NJ-JuL" secondAttribute="trailing" constant="8" id="Rg4-dw-E4U"/>
<constraint firstItem="yOu-NJ-JuL" firstAttribute="top" secondItem="x0J-mB-UXx" secondAttribute="bottom" constant="5" id="eV8-iw-geQ"/>
<constraint firstAttribute="width" constant="80" id="pOb-XC-qGX"/>
<constraint firstAttribute="height" constant="28" id="zGF-Rz-0t9"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="qhn-Dl-SDM" firstAttribute="centerY" secondItem="Xil-Cx-e0H" secondAttribute="centerY" id="9q4-xO-HV0"/>
<constraint firstItem="qhn-Dl-SDM" firstAttribute="centerX" secondItem="Xil-Cx-e0H" secondAttribute="centerX" id="HPK-kH-Njx"/>
<constraint firstAttribute="height" constant="50" id="jwa-rX-S8A"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Gnt-jG-tVj">
<rect key="frame" x="0.0" y="55" width="375" height="100"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ecc-6t-6K0">
<rect key="frame" x="8" y="18" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="IbJ-fQ-bcS"/>
<constraint firstAttribute="width" constant="40" id="nrC-ZI-HsS"/>
</constraints>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boost Regular" translatesAutoresizingMaskIntoConstraints="NO" id="sQQ-h7-F55">
<rect key="frame" x="56" y="60" width="12" height="16"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="Ood-WU-dwu"/>
<constraint firstAttribute="height" constant="16" id="g47-ik-dJ8"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kjf-lJ-8Md">
<rect key="frame" x="56" y="18" width="311" height="18"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PKb-3W-PjE">
<rect key="frame" x="56" y="40" width="311" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8qF-OR-rh0">
<rect key="frame" x="20" y="93" width="335" height="2"/>
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="Eyr-af-p55"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Boosted" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GZD-6a-olN">
<rect key="frame" x="76" y="60" width="291" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="sQQ-h7-F55" firstAttribute="leading" secondItem="PKb-3W-PjE" secondAttribute="leading" id="0er-aq-WW5"/>
<constraint firstItem="PKb-3W-PjE" firstAttribute="top" secondItem="kjf-lJ-8Md" secondAttribute="bottom" constant="4" id="1Vq-cG-Iwz"/>
<constraint firstAttribute="trailing" secondItem="GZD-6a-olN" secondAttribute="trailing" constant="8" id="3dS-nf-Udy"/>
<constraint firstItem="sQQ-h7-F55" firstAttribute="top" secondItem="PKb-3W-PjE" secondAttribute="bottom" constant="4" id="4kw-SG-XmK"/>
<constraint firstItem="kjf-lJ-8Md" firstAttribute="top" secondItem="Gnt-jG-tVj" secondAttribute="top" constant="18" id="CBL-Vu-qpE"/>
<constraint firstAttribute="bottom" secondItem="8qF-OR-rh0" secondAttribute="bottom" constant="5" id="Fkc-5w-VFp"/>
<constraint firstItem="GZD-6a-olN" firstAttribute="leading" secondItem="sQQ-h7-F55" secondAttribute="trailing" constant="8" id="IWI-G8-Tag"/>
<constraint firstAttribute="trailing" secondItem="8qF-OR-rh0" secondAttribute="trailing" constant="20" id="QGf-xK-ycr"/>
<constraint firstItem="GZD-6a-olN" firstAttribute="top" secondItem="PKb-3W-PjE" secondAttribute="bottom" constant="4" id="Yl0-kM-jbM"/>
<constraint firstItem="kjf-lJ-8Md" firstAttribute="leading" secondItem="ecc-6t-6K0" secondAttribute="trailing" constant="8" id="coM-BH-5hw"/>
<constraint firstAttribute="trailing" secondItem="kjf-lJ-8Md" secondAttribute="trailing" constant="8" id="h2a-qg-TLX"/>
<constraint firstItem="ecc-6t-6K0" firstAttribute="leading" secondItem="Gnt-jG-tVj" secondAttribute="leading" constant="8" id="jQc-6S-2dp"/>
<constraint firstAttribute="height" constant="100" id="lZR-wt-QGT"/>
<constraint firstItem="8qF-OR-rh0" firstAttribute="leading" secondItem="Gnt-jG-tVj" secondAttribute="leading" constant="20" id="laO-Ap-fRA"/>
<constraint firstAttribute="trailing" secondItem="PKb-3W-PjE" secondAttribute="trailing" constant="8" id="sMN-aQ-WvE"/>
<constraint firstItem="PKb-3W-PjE" firstAttribute="leading" secondItem="ecc-6t-6K0" secondAttribute="trailing" constant="8" id="tY8-yq-mRV"/>
<constraint firstItem="ecc-6t-6K0" firstAttribute="top" secondItem="Gnt-jG-tVj" secondAttribute="top" constant="18" id="vVq-Ij-dgg"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v8x-tf-zFb">
<rect key="frame" x="0.0" y="155" width="375" height="100"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="wte-HK-KxR">
<rect key="frame" x="8" y="18" width="40" height="40"/>
<constraints>
<constraint firstAttribute="height" constant="40" id="LeJ-eE-S7V"/>
<constraint firstAttribute="width" constant="40" id="P3M-g5-nKe"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="In reply to" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nUk-PT-X4k">
<rect key="frame" x="76" y="18" width="291" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Message" translatesAutoresizingMaskIntoConstraints="NO" id="a3a-oY-yKW">
<rect key="frame" x="56" y="20" width="12" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="0bj-Cu-Rc1"/>
<constraint firstAttribute="width" constant="12" id="euI-Zh-aax"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nfb-4h-YH9">
<rect key="frame" x="56" y="36.5" width="311" height="18"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LZx-68-NPT">
<rect key="frame" x="20" y="93" width="335" height="2"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="2" id="oQt-n9-x3j"/>
</constraints>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="odK-vM-y2x">
<rect key="frame" x="56" y="58.5" width="311" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="nfb-4h-YH9" secondAttribute="trailing" constant="8" id="3k7-pa-i7N"/>
<constraint firstAttribute="trailing" secondItem="odK-vM-y2x" secondAttribute="trailing" constant="8" id="5Tx-XP-O1i"/>
<constraint firstAttribute="trailing" secondItem="LZx-68-NPT" secondAttribute="trailing" constant="20" id="5YG-WP-25F"/>
<constraint firstItem="LZx-68-NPT" firstAttribute="leading" secondItem="v8x-tf-zFb" secondAttribute="leading" constant="20" id="AHJ-Pj-BiL"/>
<constraint firstAttribute="height" constant="100" id="AWu-MG-wTp"/>
<constraint firstAttribute="bottom" secondItem="LZx-68-NPT" secondAttribute="bottom" constant="5" id="HEJ-cP-5zi"/>
<constraint firstItem="odK-vM-y2x" firstAttribute="top" secondItem="nfb-4h-YH9" secondAttribute="bottom" constant="4" id="L4F-DE-JR4"/>
<constraint firstItem="a3a-oY-yKW" firstAttribute="top" secondItem="v8x-tf-zFb" secondAttribute="top" constant="20" id="O2o-q9-oXD"/>
<constraint firstItem="nfb-4h-YH9" firstAttribute="leading" secondItem="wte-HK-KxR" secondAttribute="trailing" constant="8" id="e7z-3X-jtV"/>
<constraint firstItem="odK-vM-y2x" firstAttribute="leading" secondItem="nfb-4h-YH9" secondAttribute="leading" id="hlj-cJ-Vzl"/>
<constraint firstItem="a3a-oY-yKW" firstAttribute="leading" secondItem="wte-HK-KxR" secondAttribute="trailing" constant="8" id="lHy-4g-lo7"/>
<constraint firstItem="wte-HK-KxR" firstAttribute="top" secondItem="v8x-tf-zFb" secondAttribute="top" constant="18" id="lk4-I6-hHF"/>
<constraint firstItem="nUk-PT-X4k" firstAttribute="leading" secondItem="a3a-oY-yKW" secondAttribute="trailing" constant="8" id="tBU-v4-n6i"/>
<constraint firstItem="nfb-4h-YH9" firstAttribute="top" secondItem="nUk-PT-X4k" secondAttribute="bottom" constant="4" id="ujU-iI-iTs"/>
<constraint firstAttribute="trailing" secondItem="nUk-PT-X4k" secondAttribute="trailing" constant="8" id="xjW-PF-58w"/>
<constraint firstItem="wte-HK-KxR" firstAttribute="leading" secondItem="v8x-tf-zFb" secondAttribute="leading" constant="8" id="ySO-Mc-5ZM"/>
<constraint firstItem="nUk-PT-X4k" firstAttribute="top" secondItem="v8x-tf-zFb" secondAttribute="top" constant="18" id="z5T-Ab-FJ7"/>
</constraints>
</view>
<view contentMode="scaleToFill" verticalHuggingPriority="249" translatesAutoresizingMaskIntoConstraints="NO" id="cAR-YB-u2k">
<rect key="frame" x="0.0" y="255" width="375" height="276"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TG6-9M-llp">
<rect key="frame" x="8" y="18" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="PMS-nr-JKf"/>
<constraint firstAttribute="width" constant="45" id="YC5-3f-ub2"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Display Name" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Tdt-bM-8kr">
<rect key="frame" x="61" y="18" width="306" height="20.5"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Username" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="OR8-xh-j0I">
<rect key="frame" x="61" y="40.5" width="306" height="18"/>
<fontDescription key="fontDescription" type="system" pointSize="15"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Content" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WPF-Oe-N2r">
<rect key="frame" x="8" y="78" width="359" height="190"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="OR8-xh-j0I" firstAttribute="leading" secondItem="TG6-9M-llp" secondAttribute="trailing" constant="8" id="05f-4m-7IE"/>
<constraint firstItem="OR8-xh-j0I" firstAttribute="top" secondItem="Tdt-bM-8kr" secondAttribute="bottom" constant="2" id="4wJ-Lh-A81"/>
<constraint firstAttribute="bottom" secondItem="WPF-Oe-N2r" secondAttribute="bottom" constant="8" id="60R-bR-ZXD"/>
<constraint firstItem="Tdt-bM-8kr" firstAttribute="top" secondItem="cAR-YB-u2k" secondAttribute="top" constant="18" id="SrP-wT-IWD"/>
<constraint firstAttribute="trailing" secondItem="Tdt-bM-8kr" secondAttribute="trailing" constant="8" id="ecd-9J-ZWS"/>
<constraint firstAttribute="trailing" secondItem="OR8-xh-j0I" secondAttribute="trailing" constant="8" id="eeu-z0-QBb"/>
<constraint firstItem="TG6-9M-llp" firstAttribute="top" secondItem="cAR-YB-u2k" secondAttribute="top" constant="18" id="lfs-pM-EkS"/>
<constraint firstItem="TG6-9M-llp" firstAttribute="leading" secondItem="cAR-YB-u2k" secondAttribute="leading" constant="8" id="oYi-cM-Q7k"/>
<constraint firstItem="WPF-Oe-N2r" firstAttribute="top" secondItem="TG6-9M-llp" secondAttribute="bottom" constant="15" id="sPk-F0-I9i"/>
<constraint firstItem="Tdt-bM-8kr" firstAttribute="leading" secondItem="TG6-9M-llp" secondAttribute="trailing" constant="8" id="uls-fx-wzk"/>
<constraint firstAttribute="trailing" secondItem="WPF-Oe-N2r" secondAttribute="trailing" constant="8" id="vxV-3b-ytI"/>
<constraint firstItem="WPF-Oe-N2r" firstAttribute="leading" secondItem="cAR-YB-u2k" secondAttribute="leading" constant="8" id="wqO-6z-tPD"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XuS-iF-YYL">
<rect key="frame" x="0.0" y="531" width="375" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="nbr-i2-Chb"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="y5N-A7-27p">
<rect key="frame" x="0.0" y="532" width="375" height="60"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pJk-g2-yyR">
<rect key="frame" x="8" y="15" width="155" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Timestamp" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8et-mR-yd2">
<rect key="frame" x="20" y="7" width="127" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Clock" translatesAutoresizingMaskIntoConstraints="NO" id="RIE-8X-Pwy">
<rect key="frame" x="0.0" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="IjZ-Hw-eym"/>
<constraint firstAttribute="width" constant="15" id="elE-cJ-aEI"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="8et-mR-yd2" secondAttribute="trailing" constant="8" id="Ef0-g6-O5k"/>
<constraint firstItem="8et-mR-yd2" firstAttribute="centerY" secondItem="pJk-g2-yyR" secondAttribute="centerY" id="kQC-AV-EAl"/>
<constraint firstAttribute="height" constant="30" id="lBc-f9-l5n"/>
<constraint firstItem="RIE-8X-Pwy" firstAttribute="leading" secondItem="pJk-g2-yyR" secondAttribute="leading" id="p7F-pf-Sks"/>
<constraint firstItem="RIE-8X-Pwy" firstAttribute="centerY" secondItem="pJk-g2-yyR" secondAttribute="centerY" id="s4a-hc-DRW"/>
<constraint firstItem="8et-mR-yd2" firstAttribute="leading" secondItem="RIE-8X-Pwy" secondAttribute="trailing" constant="5" id="xdH-yK-kCQ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="P6f-0v-SWB">
<rect key="frame" x="307" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MHw-QN-ZwH">
<rect key="frame" x="28" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Star Regular" translatesAutoresizingMaskIntoConstraints="NO" id="EID-tt-v32">
<rect key="frame" x="5" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="XFp-GZ-jzP"/>
<constraint firstAttribute="width" constant="15" id="ayZ-OA-fSG"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="4Fl-MA-OzE"/>
<constraint firstItem="MHw-QN-ZwH" firstAttribute="leading" secondItem="EID-tt-v32" secondAttribute="trailing" constant="8" id="AGn-oy-WMn"/>
<constraint firstItem="EID-tt-v32" firstAttribute="centerY" secondItem="P6f-0v-SWB" secondAttribute="centerY" id="Djm-xX-9y6"/>
<constraint firstAttribute="height" constant="30" id="ZTe-YM-cvj"/>
<constraint firstAttribute="trailing" secondItem="MHw-QN-ZwH" secondAttribute="trailing" constant="8" id="dGN-Dj-JTk"/>
<constraint firstItem="MHw-QN-ZwH" firstAttribute="centerY" secondItem="P6f-0v-SWB" secondAttribute="centerY" id="u2d-zL-cv3"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cfJ-cH-ci5">
<rect key="frame" x="239" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rq6-p2-tL4">
<rect key="frame" x="36" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Boost Regular" translatesAutoresizingMaskIntoConstraints="NO" id="wns-8Z-i60">
<rect key="frame" x="14" y="6" width="14" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="14" id="JZc-nk-48d"/>
<constraint firstAttribute="height" constant="18" id="jJ4-EX-gFy"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="rq6-p2-tL4" secondAttribute="trailing" id="6rJ-cJ-0Xb"/>
<constraint firstAttribute="height" constant="30" id="8tv-lc-73N"/>
<constraint firstItem="rq6-p2-tL4" firstAttribute="centerY" secondItem="cfJ-cH-ci5" secondAttribute="centerY" id="9vP-n8-Ni7"/>
<constraint firstAttribute="width" constant="60" id="TzT-Or-ZEZ"/>
<constraint firstItem="wns-8Z-i60" firstAttribute="centerY" secondItem="cfJ-cH-ci5" secondAttribute="centerY" id="iba-OS-yI0"/>
<constraint firstItem="rq6-p2-tL4" firstAttribute="leading" secondItem="wns-8Z-i60" secondAttribute="trailing" constant="8" id="wcx-Ut-goP"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ZKM-hs-NVu">
<rect key="frame" x="171" y="15" width="60" height="30"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="100" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uog-Tq-elS">
<rect key="frame" x="36" y="6.5" width="24" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Message" translatesAutoresizingMaskIntoConstraints="NO" id="mRG-vF-1Ur">
<rect key="frame" x="13" y="7.5" width="15" height="15"/>
<constraints>
<constraint firstAttribute="width" constant="15" id="8ig-dH-PaT"/>
<constraint firstAttribute="height" constant="15" id="p8W-V4-AWg"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Uog-Tq-elS" firstAttribute="leading" secondItem="mRG-vF-1Ur" secondAttribute="trailing" constant="8" id="H6T-dO-Miu"/>
<constraint firstAttribute="width" constant="60" id="TZY-d9-Lgc"/>
<constraint firstAttribute="trailing" secondItem="Uog-Tq-elS" secondAttribute="trailing" id="TbI-wO-3fo"/>
<constraint firstItem="Uog-Tq-elS" firstAttribute="centerY" secondItem="ZKM-hs-NVu" secondAttribute="centerY" id="XsU-g8-4W0"/>
<constraint firstAttribute="height" constant="30" id="vKV-p4-UOJ"/>
<constraint firstItem="mRG-vF-1Ur" firstAttribute="centerY" secondItem="ZKM-hs-NVu" secondAttribute="centerY" id="xMG-H7-qbH"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="ZKM-hs-NVu" firstAttribute="centerY" secondItem="y5N-A7-27p" secondAttribute="centerY" id="2wb-g9-MnU"/>
<constraint firstAttribute="trailing" secondItem="P6f-0v-SWB" secondAttribute="trailing" constant="8" id="7l6-9R-zXM"/>
<constraint firstAttribute="height" constant="60" id="CSD-OT-KeH"/>
<constraint firstItem="P6f-0v-SWB" firstAttribute="centerY" secondItem="y5N-A7-27p" secondAttribute="centerY" id="S34-vg-5Qz"/>
<constraint firstItem="pJk-g2-yyR" firstAttribute="centerY" secondItem="y5N-A7-27p" secondAttribute="centerY" id="STf-J7-ymf"/>
<constraint firstItem="cfJ-cH-ci5" firstAttribute="centerY" secondItem="y5N-A7-27p" secondAttribute="centerY" id="ZT4-Fj-yNI"/>
<constraint firstItem="pJk-g2-yyR" firstAttribute="leading" secondItem="y5N-A7-27p" secondAttribute="leading" constant="8" id="aPb-pb-D3s"/>
<constraint firstItem="cfJ-cH-ci5" firstAttribute="leading" secondItem="ZKM-hs-NVu" secondAttribute="trailing" constant="8" id="hXF-W4-P8y"/>
<constraint firstItem="P6f-0v-SWB" firstAttribute="leading" secondItem="cfJ-cH-ci5" secondAttribute="trailing" constant="8" id="kcy-tq-hcb"/>
<constraint firstItem="ZKM-hs-NVu" firstAttribute="leading" secondItem="pJk-g2-yyR" secondAttribute="trailing" constant="8" id="s4k-Oq-Qhh"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QYs-Yp-yiP">
<rect key="frame" x="0.0" y="592" width="375" height="50"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9yB-8Q-lYW">
<rect key="frame" x="147.5" y="11" width="80" height="28"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Down" translatesAutoresizingMaskIntoConstraints="NO" id="bq4-ha-fxY">
<rect key="frame" x="34" y="22" width="12" height="6"/>
<constraints>
<constraint firstAttribute="width" constant="12" id="Wmv-nD-o7Z"/>
<constraint firstAttribute="height" constant="6" id="ylM-tH-PTM"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Load More" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r0T-09-Pxl">
<rect key="frame" x="8" y="2.5" width="64" height="14.5"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.090196078430000007" green="0.047058823530000002" blue="0.28627450980000002" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="r0T-09-Pxl" secondAttribute="trailing" constant="8" id="Cej-C6-8tJ"/>
<constraint firstAttribute="width" constant="80" id="JHf-oX-B7h"/>
<constraint firstItem="bq4-ha-fxY" firstAttribute="top" secondItem="r0T-09-Pxl" secondAttribute="bottom" constant="5" id="KqY-Yi-jbq"/>
<constraint firstAttribute="height" constant="28" id="Qu8-ZU-CPU"/>
<constraint firstItem="r0T-09-Pxl" firstAttribute="leading" secondItem="9yB-8Q-lYW" secondAttribute="leading" constant="8" id="RjE-aH-bYb"/>
<constraint firstAttribute="bottom" secondItem="bq4-ha-fxY" secondAttribute="bottom" id="gpS-st-KmW"/>
<constraint firstItem="bq4-ha-fxY" firstAttribute="centerX" secondItem="9yB-8Q-lYW" secondAttribute="centerX" id="oI9-gK-lxE"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.72941176470000002" green="0.6705882353" blue="0.83921568629999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="9yB-8Q-lYW" firstAttribute="centerY" secondItem="QYs-Yp-yiP" secondAttribute="centerY" id="7pg-7z-kPR"/>
<constraint firstItem="9yB-8Q-lYW" firstAttribute="centerX" secondItem="QYs-Yp-yiP" secondAttribute="centerX" id="Ssg-rv-ode"/>
<constraint firstAttribute="height" constant="50" id="kPI-a2-kok"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="m4t-ve-E78">
<rect key="frame" x="0.0" y="642" width="375" height="5"/>
<color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.93725490199999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="5" id="QFa-Y9-r5a"/>
</constraints>
</view>
</subviews>
</stackView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="7Og-IU-seR" firstAttribute="trailing" secondItem="vUN-kp-3ea" secondAttribute="trailing" id="DrH-iG-S02"/>
<constraint firstItem="7Og-IU-seR" firstAttribute="bottom" secondItem="vUN-kp-3ea" secondAttribute="bottom" id="INp-h5-ew1"/>
<constraint firstItem="7Og-IU-seR" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="KtR-fa-O8q"/>
<constraint firstItem="7Og-IU-seR" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="nHe-JN-fcv"/>
</constraints>
<nil key="simulatedTopBarMetrics"/>
<nil key="simulatedBottomBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
</view>
</objects>
<resources>
<image name="Boost Regular" width="20" height="24"/>
<image name="Clock" width="22" height="22"/>
<image name="Down" width="14" height="8"/>
<image name="Message" width="20" height="20"/>
<image name="Star Regular" width="22" height="22"/>
<image name="Up" width="14" height="8"/>
</resources>
</document>

26
elpha-ios/TimelineTableViewCell.swift

@ -9,29 +9,5 @@
import UIKit
class TimelineTableViewCell: UITableViewCell {
@IBOutlet var boostView: UIView!
@IBOutlet var boostAvatarImageView: UIImageView!
@IBOutlet var boostDisplayNameLabel: UILabel!
@IBOutlet var boostUsernameLabel: UILabel!
@IBOutlet var replyView: UIView!
@IBOutlet var replyAvatarImageView: UIImageView!
@IBOutlet var replyDisplayNameLabel: UILabel!
@IBOutlet var replyUsernameLabel: UILabel!
@IBOutlet var avatarImageView: UIImageView!
@IBOutlet var displayNameLabel: UILabel!
@IBOutlet var usernameLabel: UILabel!
@IBOutlet var contentLabel: UILabel!
@IBOutlet var timestampLabel: UILabel!
@IBOutlet var repliesImageView: UIImageView!
@IBOutlet var repliesLabel: UILabel!
@IBOutlet var boostsImageView: UIImageView!
@IBOutlet var boostsLabel: UILabel!
@IBOutlet var favoritesImageView: UIImageView!
@IBOutlet var favoritesLabel: UILabel!
@IBOutlet var topDividerView: UIView!
@IBOutlet var topLoadMoreView: UIView!
@IBOutlet var bottomDividerView: UIView!
@IBOutlet var bottomLoadMoreView: UIView!
@IBOutlet var attachmentsView: UIView!
@IBOutlet var attachmentsHeightConstraint: NSLayoutConstraint!
@IBOutlet var statusView: StatusView!
}

96
elpha-ios/TimelineTableViewController.swift

@ -197,11 +197,19 @@ class TimelineTableViewController: UITableViewController {
}
let newStatuses = statuses.filter { $0.new }
DispatchQueue.main.async {
if let navigationController = self.navigationController as? TimelinesNavigationController,
let newStatusesView = navigationController.newStatusesView {
newStatusesView.isHidden = false
newStatusesView.setCount(newStatuses.count)
if newStatuses.count > -1 {
DispatchQueue.main.async {
if let navigationController = self.navigationController as? TimelinesNavigationController,
let newStatusesView = navigationController.newStatusesView {
newStatusesView.setCount(newStatuses.count)
newStatusesView.isHidden = false
self.view.layoutIfNeeded()
UIView.animate(withDuration: 2.0, animations: { () -> Void in
navigationController.bottomLayoutConstraint?.constant = -20
self.view.layoutIfNeeded()
})
}
}
}
@ -286,16 +294,16 @@ extension TimelineTableViewController {
fatalError("Unable to find reusable cell")
}
cell.topDividerView.isHidden = false
cell.topLoadMoreView.isHidden = true
cell.boostView.isHidden = true
cell.replyView.isHidden = true
cell.bottomLoadMoreView.isHidden = true
cell.bottomDividerView.isHidden = false
cell.statusView.topDividerView.isHidden = false
cell.statusView.topLoadMoreView.isHidden = true
cell.statusView.boostView.isHidden = true
cell.statusView.replyView.isHidden = true
cell.statusView.bottomLoadMoreView.isHidden = true
cell.statusView.bottomDividerView.isHidden = false
cell.attachmentsView.backgroundColor = UIColor.white
cell.attachmentsHeightConstraint.constant = cell.frame.width
cell.attachmentsView.isHidden = true
cell.statusView.attachmentsView.backgroundColor = UIColor.white
cell.statusView.attachmentsHeightConstraint.constant = cell.frame.width
cell.statusView.attachmentsView.isHidden = true
if let statuses = timelineStatuses() {
let status = statuses[indexPath.row]
@ -313,14 +321,14 @@ extension TimelineTableViewController {
let previousStatus = statuses[indexPath.row - 1]
if let previousBoundary = boundaries.filtered(using: NSPredicate(format: "statusID = %@", previousStatus.id!)).first as? TimelineBoundaryMO {
if !previousBoundary.start {
cell.topDividerView.isHidden = true
cell.topLoadMoreView.isHidden = false
cell.statusView.topDividerView.isHidden = true
cell.statusView.topLoadMoreView.isHidden = false
}
}
}
}
} else {
cell.topDividerView.isHidden = true
cell.statusView.topDividerView.isHidden = true
}
if indexPath.row < statuses.count - 1 {
@ -329,8 +337,8 @@ extension TimelineTableViewController {
let nextStatus = statuses[indexPath.row + 1]
if let nextBoundary = boundaries.filtered(using: NSPredicate(format: "statusID = %@", nextStatus.id!)).first as? TimelineBoundaryMO {
if nextBoundary.start {
cell.bottomDividerView.isHidden = true
cell.bottomLoadMoreView.isHidden = false
cell.statusView.bottomDividerView.isHidden = true
cell.statusView.bottomLoadMoreView.isHidden = false
}
}
}
@ -339,14 +347,14 @@ extension TimelineTableViewController {
func setStatusContent(_ status: StatusMO) {
if let account = status.account {
cell.avatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.displayNameLabel.text = account.displayName
cell.usernameLabel.text = account.acct
cell.statusView.avatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.statusView.displayNameLabel.text = account.displayName
cell.statusView.usernameLabel.text = account.acct
}
if let attachments = status.attachments, attachments.count > 0 {
cell.attachmentsView.isHidden = false
AttachmentsManager.setupAttachmentsView(cell.attachmentsView, withAttachments: attachments)
cell.statusView.attachmentsView.isHidden = false
AttachmentsManager.setupAttachmentsView(cell.statusView.attachmentsView, withAttachments: attachments)
}
if let content = status.content {
@ -358,45 +366,45 @@ extension TimelineTableViewController {
documentAttributes: nil
)
cell.contentLabel.attributedText = attributedText
cell.statusView.contentLabel.attributedText = attributedText
} catch {
print("\(error)")
}
}
cell.timestampLabel.text = status.createdAt!.timeAgo()
cell.repliesLabel.text = "0"
cell.boostsLabel.text = NumberFormatter.localizedString(from: NSNumber(value: status.reblogsCount), number: .decimal)
cell.favoritesLabel.text = NumberFormatter.localizedString(from: NSNumber(value: status.favouritesCount), number: .decimal)
cell.statusView.timestampLabel.text = status.createdAt!.timeAgo()
cell.statusView.repliesLabel.text = "0"
cell.statusView.boostsLabel.text = NumberFormatter.localizedString(from: NSNumber(value: status.reblogsCount), number: .decimal)
cell.statusView.favoritesLabel.text = NumberFormatter.localizedString(from: NSNumber(value: status.favouritesCount), number: .decimal)
if status.reblogged {
cell.boostsImageView.image = UIImage(named: "Boost Bold")
cell.statusView.boostsImageView.image = UIImage(named: "Boost Bold")
} else {
cell.boostsImageView.image = UIImage(named: "Boost Regular")
cell.statusView.boostsImageView.image = UIImage(named: "Boost Regular")
}
if status.favourited {
cell.favoritesImageView.image = UIImage(named: "Star Filled")
cell.statusView.favoritesImageView.image = UIImage(named: "Star Filled")
} else {
cell.favoritesImageView.image = UIImage(named: "Star Regular")
cell.statusView.favoritesImageView.image = UIImage(named: "Star Regular")
}
}
if let reblog = status.reblog {
cell.boostView.isHidden = false
cell.statusView.boostView.isHidden = false
if let account = status.account {
cell.boostAvatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.boostDisplayNameLabel.text = account.displayName
cell.boostUsernameLabel.text = account.acct
cell.statusView.boostAvatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.statusView.boostDisplayNameLabel.text = account.displayName
cell.statusView.boostUsernameLabel.text = account.acct
}
setStatusContent(reblog)
} else {
if let account = status.account {
cell.avatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.displayNameLabel.text = account.displayName
cell.usernameLabel.text = account.acct
cell.statusView.avatarImageView.af_setImage(withURL: account.avatarURL!, filter: avatarFilter)
cell.statusView.displayNameLabel.text = account.displayName
cell.statusView.usernameLabel.text = account.acct
}
setStatusContent(status)
@ -404,10 +412,10 @@ extension TimelineTableViewController {
if let replyAccountID = status.inReplyToAccountID {
if let replyAccount = MastodonDataManager.getAccountByID(replyAccountID) {
cell.replyView.isHidden = false
cell.replyAvatarImageView.af_setImage(withURL: replyAccount.avatarURL!, filter: avatarFilter)
cell.replyDisplayNameLabel.text = replyAccount.displayName
cell.replyUsernameLabel.text = replyAccount.acct
cell.statusView.replyView.isHidden = false
cell.statusView.replyAvatarImageView.af_setImage(withURL: replyAccount.avatarURL!, filter: avatarFilter)
cell.statusView.replyDisplayNameLabel.text = replyAccount.displayName
cell.statusView.replyUsernameLabel.text = replyAccount.acct
}
}

5
elpha-ios/TimelinesNavigationController.swift

@ -10,6 +10,7 @@ import UIKit
class TimelinesNavigationController: UINavigationController {
public var newStatusesView: NewStatusesView? = nil
public var bottomLayoutConstraint: NSLayoutConstraint? = nil
override func viewDidLoad() {
super.viewDidLoad()
@ -32,11 +33,13 @@ class TimelinesNavigationController: UINavigationController {
view.addSubview(blurEffectView)
bottomLayoutConstraint = blurEffectView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 50)
NSLayoutConstraint.activate([
blurEffectView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
blurEffectView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
blurEffectView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -20),
blurEffectView.heightAnchor.constraint(equalToConstant: 50),
bottomLayoutConstraint!,
])
self.newStatusesView = newStatusesView

Loading…
Cancel
Save