Compare commits

...

10 Commits

Author SHA1 Message Date
Yannick Loriot 1a03f03803 Update SwiftPM package 2019-10-12 22:04:37 +01:00
Yannick Loriot 87bcf14ac2 Fixing the Swift5 warnings 2019-05-27 19:31:38 +02:00
Yannick Loriot 36f9ad47e9
Fixing indentation code 2019-03-07 22:43:14 +00:00
Yannick Loriot c380f493d0 Bump to v3.0.0 2018-09-25 10:17:31 +02:00
Yannick Loriot 2aae2b6687 Updating to Swift 4.2 2018-09-25 10:11:27 +02:00
Yannick Loriot 781d6e9301 Updating the example project with an UITableViewCell integration 2018-08-20 19:33:23 +02:00
Yannick Loriot ecb7f33359 Fixing the access modifier of the sizeToFit property 2018-05-04 17:59:40 +02:00
Yannick Loriot 46b0b298c7 Bump to v2.1.0 2018-05-04 16:51:41 +02:00
Yannick Loriot 90e5a9f0da Adding the sizeToFit property to ReactionSummary 2018-05-04 16:50:34 +02:00
Yannick Loriot e61f7727b4 Updating test roject to swift 4 2018-05-04 15:57:19 +02:00
37 changed files with 865 additions and 180 deletions

1
.gitignore vendored
View File

@ -17,3 +17,4 @@ DerivedData
*.hmap
*.xccheckout
*.txt
*.swiftpm

View File

@ -1 +1 @@
4.0
5

View File

@ -1,7 +1,7 @@
language: objective-c
osx_image: xcode9
osx_image: xcode10.2
script:
- cd Examples
- xcodebuild -version
- xcodebuild -project ReactionsExample.xcodeproj -scheme ReactionsTests -sdk iphonesimulator -destination "platform=iOS Simulator,name=iPhone 6" -configuration Release ONLY_ACTIVE_ARCH=YES -enableCodeCoverage YES test
- xcodebuild -project ReactionsExample.xcodeproj -scheme ReactionsTests -sdk iphonesimulator -destination "platform=iOS Simulator,name=iPhone 8" -configuration Release ONLY_ACTIVE_ARCH=YES -enableCodeCoverage YES test
- bash <(curl -s https://codecov.io/bash) -cF ios

View File

@ -1,5 +1,10 @@
# Change log
## [Version 2.1.0](https://github.com/yannickl/Reactions/releases/tag/2.1.0)
*Released on 2018-05-04.*
- Adding the `sizeToFit` property to the `ReactionSummary`
## [Version 2.0.0](https://github.com/yannickl/Reactions/releases/tag/2.0.0)
*Released on 2017-09-21.*

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>2.0.0</string>
<string>3.0.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>

View File

@ -37,6 +37,7 @@
CE6C88181DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = CE6C881C1DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict */; };
CE6C88191DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = CE6C881C1DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict */; };
CE6C881A1DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = CE6C881C1DD1DD7500ED6864 /* ReactionSummaryLocalizable.stringsdict */; };
CE712DB4212B261400649B5A /* ReactionCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE712DB3212B261400649B5A /* ReactionCellView.swift */; };
CE83F88E1DA8F033000943AB /* Reactions.h in Headers */ = {isa = PBXBuildFile; fileRef = CE83F88C1DA8F033000943AB /* Reactions.h */; settings = {ATTRIBUTES = (Public, ); }; };
CE83F8911DA8F033000943AB /* Reactions.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE83F88A1DA8F033000943AB /* Reactions.framework */; };
CE83F8921DA8F033000943AB /* Reactions.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = CE83F88A1DA8F033000943AB /* Reactions.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
@ -134,6 +135,7 @@
CE6C88171DD1DD7100ED6864 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/ReactionSummaryLocalizable.strings; sourceTree = "<group>"; };
CE6C881B1DD1DD7500ED6864 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = Base; path = Base.lproj/ReactionSummaryLocalizable.stringsdict; sourceTree = "<group>"; };
CE6C881D1DD1DD7600ED6864 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/ReactionSummaryLocalizable.stringsdict; sourceTree = "<group>"; };
CE712DB3212B261400649B5A /* ReactionCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReactionCellView.swift; sourceTree = "<group>"; };
CE83F88A1DA8F033000943AB /* Reactions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Reactions.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CE83F88C1DA8F033000943AB /* Reactions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reactions.h; sourceTree = "<group>"; };
CE83F88D1DA8F033000943AB /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -269,6 +271,7 @@
children = (
CED4FCE11D9FD95D00F54838 /* AppDelegate.swift */,
CED4FCE31D9FD95D00F54838 /* ViewController.swift */,
CE712DB3212B261400649B5A /* ReactionCellView.swift */,
CED4FCE51D9FD95D00F54838 /* Main.storyboard */,
CED4FCE81D9FD95D00F54838 /* Assets.xcassets */,
CED4FCEA1D9FD95D00F54838 /* LaunchScreen.storyboard */,
@ -391,12 +394,12 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0800;
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Yannick Loriot";
TargetAttributes = {
CE83F8891DA8F033000943AB = {
CreatedOnToolsVersion = 8.0;
LastSwiftMigration = 0900;
LastSwiftMigration = 1020;
ProvisioningStyle = Manual;
};
CE83F8AD1DA95CDA000943AB = {
@ -408,14 +411,14 @@
CED4FCDD1D9FD95D00F54838 = {
CreatedOnToolsVersion = 8.0;
DevelopmentTeam = 5SJ773RP6R;
LastSwiftMigration = 0900;
LastSwiftMigration = 1020;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = CED4FCD91D9FD95D00F54838 /* Build configuration list for PBXProject "ReactionsExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
@ -555,6 +558,7 @@
CE225E511DB1611700C21D8D /* CAReactionSummaryLayer.swift in Sources */,
CED9D93C1DA64FCD00A70C2D /* Components.swift in Sources */,
CED4FCF71DA014B100F54838 /* Reaction.swift in Sources */,
CE712DB4212B261400649B5A /* ReactionCellView.swift in Sources */,
CED9D94C1DA7D36700A70C2D /* ReactionSummaryConfig.swift in Sources */,
CED4FCFB1DA10E4300F54838 /* ReactionSelector.swift in Sources */,
);
@ -648,7 +652,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.Reactions;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -671,7 +675,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.Reactions;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
@ -689,7 +693,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.ReactionsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.2;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactionsExample.app/ReactionsExample";
};
name = Debug;
@ -705,7 +709,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.ReactionsTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_VERSION = 4.2;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/ReactionsExample.app/ReactionsExample";
};
name = Release;
@ -724,6 +728,7 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
@ -731,6 +736,7 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -782,6 +788,7 @@
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
@ -789,6 +796,7 @@
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
@ -829,7 +837,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.ReactionsExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
@ -843,7 +851,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.yannickloriot.ReactionsExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 4.0;
SWIFT_VERSION = 5.0;
};
name = Release;
};

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -26,7 +26,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
@ -37,7 +36,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0930"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -10,9 +10,8 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
codeCoverageEnabled = "YES"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
@ -32,7 +31,6 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"

View File

@ -14,7 +14,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}

View File

@ -84,6 +84,11 @@
"idiom" : "ipad",
"size" : "83.5x83.5",
"scale" : "2x"
},
{
"idiom" : "ios-marketing",
"size" : "1024x1024",
"scale" : "1x"
}
],
"info" : {

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "dots@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "facebook@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "facebook_logo@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 989 B

View File

@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11201" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="JXt-pm-xzj">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11161"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
@ -19,6 +23,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yZN-Tr-YCb" customClass="ReactionSelector" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="46.5" y="307.5" width="282" height="52"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="52" id="JKf-vL-t3z"/>
@ -29,86 +34,645 @@
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3W2-40-QAu" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="130.5" y="389.5" width="114" height="38"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="114" id="Lw2-Ar-2Rc"/>
<constraint firstAttribute="height" constant="38" id="qkB-jB-xgK"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9zD-5d-Zpi" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hid-xG-oWI">
<rect key="frame" x="93" y="612" width="189" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="114" id="0bl-3a-c4z"/>
<constraint firstAttribute="height" constant="38" id="Zny-i7-rQp"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="189" id="QEE-vQ-LBv"/>
<constraint firstAttribute="height" constant="35" id="ixG-1h-9GS"/>
</constraints>
<state key="normal" title="View Inside TableView Cells"/>
<connections>
<action selector="facebookButtonReactionTouchedUpAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="daM-Ta-7vb"/>
<segue destination="1ac-BN-GOL" kind="show" id="8f1-ja-4An"/>
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jWo-H6-9GO" customClass="ReactionSummary" customModule="ReactionsExample" customModuleProvider="target">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="q1k-5x-TOp"/>
</constraints>
<connections>
<action selector="summaryTouchedAction:" destination="BYZ-38-t0r" eventType="touchUpInside" id="EYH-KU-Mlv"/>
</connections>
</view>
<label userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eZb-9n-6lO">
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="37" id="mDP-bN-3YY"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.50196081400000003" green="0.50196081400000003" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QpX-4F-4B3">
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="j6x-hV-BYJ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r2V-fQ-AD8">
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="ALu-SK-5Sd"/>
</constraints>
</view>
</button>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="jWo-H6-9GO" firstAttribute="top" secondItem="9zD-5d-Zpi" secondAttribute="bottom" constant="4" id="8vZ-dE-b3W"/>
<constraint firstItem="eZb-9n-6lO" firstAttribute="top" secondItem="QpX-4F-4B3" secondAttribute="bottom" id="BRH-PW-D7C"/>
<constraint firstItem="jWo-H6-9GO" firstAttribute="top" secondItem="eZb-9n-6lO" secondAttribute="bottom" constant="5" id="Cqs-Xa-I2S"/>
<constraint firstAttribute="trailing" secondItem="eZb-9n-6lO" secondAttribute="trailing" id="FGX-zV-Ehg"/>
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="Hid-xG-oWI" secondAttribute="bottom" constant="20" id="7yf-s3-fXh"/>
<constraint firstItem="3W2-40-QAu" firstAttribute="top" secondItem="yZN-Tr-YCb" secondAttribute="bottom" constant="30" id="LDj-pw-zsc"/>
<constraint firstItem="yZN-Tr-YCb" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="LP5-Ep-8if"/>
<constraint firstItem="eZb-9n-6lO" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="Mjp-qf-E50"/>
<constraint firstAttribute="trailing" secondItem="r2V-fQ-AD8" secondAttribute="trailing" id="Mw6-ez-lcG"/>
<constraint firstAttribute="trailing" secondItem="QpX-4F-4B3" secondAttribute="trailing" id="U4M-cg-3lR"/>
<constraint firstItem="yZN-Tr-YCb" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="VEs-Xj-pfX"/>
<constraint firstItem="jWo-H6-9GO" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" constant="8" id="XBl-O2-UKd"/>
<constraint firstItem="jWo-H6-9GO" firstAttribute="top" secondItem="r2V-fQ-AD8" secondAttribute="bottom" constant="4" id="cP8-Up-XRk"/>
<constraint firstItem="r2V-fQ-AD8" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="cUw-0l-mTE"/>
<constraint firstItem="yZN-Tr-YCb" firstAttribute="centerX" secondItem="3W2-40-QAu" secondAttribute="centerX" id="co8-Kw-neA"/>
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="jWo-H6-9GO" secondAttribute="bottom" constant="4" id="eqz-or-lyo"/>
<constraint firstAttribute="trailing" secondItem="jWo-H6-9GO" secondAttribute="trailing" constant="8" id="kLL-jH-Zis"/>
<constraint firstItem="9zD-5d-Zpi" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" constant="300" id="n4m-YK-8Jg"/>
<constraint firstItem="QpX-4F-4B3" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="rgE-Eo-Q3O"/>
<constraint firstItem="Hid-xG-oWI" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="xIY-B8-Ih6"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="vFP-D5-2XW"/>
<connections>
<outlet property="facebookReactionButton" destination="9zD-5d-Zpi" id="naU-pJ-kv4"/>
<outlet property="feedbackLabel" destination="eZb-9n-6lO" id="J95-Ji-GcN"/>
<outlet property="reactionButton" destination="3W2-40-QAu" id="TJy-sa-dXp"/>
<outlet property="reactionSelect" destination="yZN-Tr-YCb" id="mkN-4W-wHg"/>
<outlet property="reactionSummary" destination="jWo-H6-9GO" id="Tf7-6q-M1N"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="116" y="123.68815592203899"/>
<point key="canvasLocation" x="687" y="-228"/>
</scene>
<!--Table View Controller-->
<scene sceneID="nIg-42-WcI">
<objects>
<tableViewController id="1ac-BN-GOL" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" id="IuD-Ed-PCZ">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="0.82745098039999998" green="0.83921568629999999" blue="0.85882352939999995" alpha="1" colorSpace="calibratedRGB"/>
<sections>
<tableViewSection id="LVJ-SK-sfX">
<cells>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" rowHeight="270" id="Mmr-Br-ciU" customClass="ReactionCellView" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="0.0" y="0.0" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Mmr-Br-ciU" id="UhP-bl-tMo">
<rect key="frame" x="0.0" y="0.0" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="M4A-bX-mxX">
<rect key="frame" x="0.0" y="0.0" width="375" height="262"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" insetsLayoutMarginsFromSafeArea="NO" image="facebook" translatesAutoresizingMaskIntoConstraints="NO" id="IEP-HX-ZmL">
<rect key="frame" x="0.0" y="44" width="375" height="139"/>
<constraints>
<constraint firstAttribute="height" constant="139" id="Se4-n0-UNj"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Dyz-u3-UKj" customClass="ReactionSummary" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="4" y="191" width="367" height="25"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="adf-0G-iBf"/>
</constraints>
<connections>
<action selector="summaryTouchedAction:" destination="Mmr-Br-ciU" eventType="touchUpInside" id="LJB-cL-ubG"/>
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gJk-Rj-8w4" userLabel="TopLine">
<rect key="frame" x="16" y="224" width="343" height="1"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="PmU-P3-7zW"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cmU-Az-s7m" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="8" y="224.5" width="114" height="38"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="38" id="KTw-9T-Hf4"/>
<constraint firstAttribute="width" constant="114" id="n7q-Z6-5Ob"/>
</constraints>
<connections>
<action selector="facebookButtonReactionTouchedUpAction:" destination="Mmr-Br-ciU" eventType="touchUpInside" id="QpW-6F-C9U"/>
</connections>
</view>
<label userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TZ9-M4-bdi">
<rect key="frame" x="0.0" y="224.5" width="375" height="37"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="37" id="3uy-Rg-Jhy"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.50196081400000003" green="0.50196081400000003" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bQp-bZ-wKX" userLabel="BottomLine">
<rect key="frame" x="0.0" y="261.5" width="375" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="G6i-Cd-TEJ"/>
</constraints>
</view>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="dots" translatesAutoresizingMaskIntoConstraints="NO" id="thD-kB-1Rt">
<rect key="frame" x="353" y="13" width="18" height="18"/>
<constraints>
<constraint firstAttribute="width" secondItem="thD-kB-1Rt" secondAttribute="height" multiplier="1:1" id="TJc-t9-7bj"/>
<constraint firstAttribute="height" constant="18" id="ngA-cM-MEr"/>
</constraints>
</imageView>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="facebook_logo" translatesAutoresizingMaskIntoConstraints="NO" id="MD8-gU-Q6V">
<rect key="frame" x="4" y="4" width="36" height="36"/>
<constraints>
<constraint firstAttribute="height" constant="36" id="R1c-Iy-5OO"/>
<constraint firstAttribute="width" secondItem="MD8-gU-Q6V" secondAttribute="height" multiplier="1:1" id="RoU-ZA-Q1f"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5bU-c5-GSC">
<rect key="frame" x="44" y="4" width="65.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="KBh-UF-EMS"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Yesterday" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nnc-lV-JEQ">
<rect key="frame" x="44" y="22" width="50.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="OME-ia-7qo"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="12"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="TZ9-M4-bdi" secondAttribute="trailing" id="5se-ZN-kMh"/>
<constraint firstItem="cmU-Az-s7m" firstAttribute="top" secondItem="gJk-Rj-8w4" secondAttribute="bottom" id="8m8-0v-bpv"/>
<constraint firstItem="Dyz-u3-UKj" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" constant="4" id="8pz-oZ-etr"/>
<constraint firstItem="gJk-Rj-8w4" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" constant="16" id="A9S-JO-jdm"/>
<constraint firstItem="Nnc-lV-JEQ" firstAttribute="leading" secondItem="MD8-gU-Q6V" secondAttribute="trailing" constant="4" id="AdM-n6-k3H"/>
<constraint firstAttribute="trailing" secondItem="gJk-Rj-8w4" secondAttribute="trailing" constant="16" id="CPg-38-iLs"/>
<constraint firstItem="IEP-HX-ZmL" firstAttribute="top" secondItem="MD8-gU-Q6V" secondAttribute="bottom" constant="4" id="HIC-5d-TVX"/>
<constraint firstItem="bQp-bZ-wKX" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" id="ILD-pf-KEg"/>
<constraint firstItem="Dyz-u3-UKj" firstAttribute="top" secondItem="IEP-HX-ZmL" secondAttribute="bottom" constant="8" id="P74-qZ-K3Z"/>
<constraint firstItem="IEP-HX-ZmL" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" id="Ube-bh-g0g"/>
<constraint firstItem="bQp-bZ-wKX" firstAttribute="top" secondItem="TZ9-M4-bdi" secondAttribute="bottom" id="Uqr-mO-Hoc"/>
<constraint firstItem="5bU-c5-GSC" firstAttribute="leading" secondItem="MD8-gU-Q6V" secondAttribute="trailing" constant="4" id="V4p-lA-chY"/>
<constraint firstItem="gJk-Rj-8w4" firstAttribute="top" secondItem="Dyz-u3-UKj" secondAttribute="bottom" constant="8" id="VEe-FQ-Y7N"/>
<constraint firstAttribute="trailing" secondItem="bQp-bZ-wKX" secondAttribute="trailing" id="Ywz-VM-qwG"/>
<constraint firstItem="TZ9-M4-bdi" firstAttribute="top" secondItem="gJk-Rj-8w4" secondAttribute="bottom" id="agx-xK-ylE"/>
<constraint firstItem="cmU-Az-s7m" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" constant="8" id="cSd-Qz-0Bn"/>
<constraint firstAttribute="trailing" secondItem="IEP-HX-ZmL" secondAttribute="trailing" id="dLc-ik-MxK"/>
<constraint firstItem="MD8-gU-Q6V" firstAttribute="top" secondItem="M4A-bX-mxX" secondAttribute="top" constant="4" id="ean-dn-Clo"/>
<constraint firstItem="5bU-c5-GSC" firstAttribute="top" secondItem="M4A-bX-mxX" secondAttribute="top" constant="4" id="pEm-w5-Lq9"/>
<constraint firstAttribute="trailing" secondItem="Dyz-u3-UKj" secondAttribute="trailing" constant="4" id="qpc-SY-fvo"/>
<constraint firstItem="Nnc-lV-JEQ" firstAttribute="top" secondItem="5bU-c5-GSC" secondAttribute="bottom" id="u5v-dY-hgi"/>
<constraint firstAttribute="trailing" secondItem="thD-kB-1Rt" secondAttribute="trailing" constant="4" id="uMM-em-mVd"/>
<constraint firstItem="TZ9-M4-bdi" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" id="ue5-uP-6fN"/>
<constraint firstItem="thD-kB-1Rt" firstAttribute="top" secondItem="M4A-bX-mxX" secondAttribute="top" constant="13" id="vBI-4m-rqY"/>
<constraint firstItem="MD8-gU-Q6V" firstAttribute="leading" secondItem="M4A-bX-mxX" secondAttribute="leading" constant="4" id="xLe-ah-KL7"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.82745098039215681" green="0.83921568627450982" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="M4A-bX-mxX" firstAttribute="top" secondItem="UhP-bl-tMo" secondAttribute="top" id="0vh-YR-YQC"/>
<constraint firstItem="M4A-bX-mxX" firstAttribute="leading" secondItem="UhP-bl-tMo" secondAttribute="leading" id="1k3-EK-Ue8"/>
<constraint firstAttribute="bottom" secondItem="M4A-bX-mxX" secondAttribute="bottom" constant="8" id="Ky9-Tu-nx9"/>
<constraint firstAttribute="trailing" secondItem="M4A-bX-mxX" secondAttribute="trailing" id="hGr-PI-4V1"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="avatarImageView" destination="MD8-gU-Q6V" id="Ljo-lb-jjX"/>
<outlet property="facebookReactionButton" destination="cmU-Az-s7m" id="hsl-ZQ-FbU"/>
<outlet property="feedbackLabel" destination="TZ9-M4-bdi" id="2f0-TP-zPy"/>
<outlet property="reactionSummary" destination="Dyz-u3-UKj" id="0HA-Y2-0v5"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" rowHeight="270" id="zxW-ti-iEF" customClass="ReactionCellView" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="0.0" y="270" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="zxW-ti-iEF" id="lUG-09-GcS">
<rect key="frame" x="0.0" y="0.0" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MeX-sp-hh3">
<rect key="frame" x="0.0" y="0.0" width="375" height="262"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" insetsLayoutMarginsFromSafeArea="NO" image="facebook" translatesAutoresizingMaskIntoConstraints="NO" id="ZrK-Rs-q2D">
<rect key="frame" x="0.0" y="44" width="375" height="139"/>
<constraints>
<constraint firstAttribute="height" constant="139" id="h62-en-MHZ"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yFG-lh-uur" customClass="ReactionSummary" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="4" y="191" width="367" height="25"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="hI4-T6-HXm"/>
</constraints>
<connections>
<action selector="summaryTouchedAction:" destination="zxW-ti-iEF" eventType="touchUpInside" id="sth-BO-9S3"/>
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cIo-6y-f5u" userLabel="TopLine">
<rect key="frame" x="16" y="224" width="343" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="VVH-q4-EFq"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t2g-sN-oGm" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="8" y="224.5" width="114" height="38"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="114" id="0QL-0t-fRF"/>
<constraint firstAttribute="height" constant="38" id="ST2-3R-fTh"/>
</constraints>
<connections>
<action selector="facebookButtonReactionTouchedUpAction:" destination="zxW-ti-iEF" eventType="touchUpInside" id="QKe-KN-38s"/>
</connections>
</view>
<label userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="164-mZ-wNH">
<rect key="frame" x="0.0" y="224.5" width="375" height="37"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="37" id="s4g-Cu-cxj"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.50196081400000003" green="0.50196081400000003" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jxl-k0-sk3" userLabel="BottomLine">
<rect key="frame" x="0.0" y="261.5" width="375" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="UJJ-WS-EOy"/>
</constraints>
</view>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="dots" translatesAutoresizingMaskIntoConstraints="NO" id="wRd-8q-nkJ">
<rect key="frame" x="353" y="13" width="18" height="18"/>
<constraints>
<constraint firstAttribute="width" secondItem="wRd-8q-nkJ" secondAttribute="height" multiplier="1:1" id="47P-u7-RxQ"/>
<constraint firstAttribute="height" constant="18" id="AsW-05-fig"/>
</constraints>
</imageView>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="facebook_logo" translatesAutoresizingMaskIntoConstraints="NO" id="Jkg-rm-wOk">
<rect key="frame" x="4" y="4" width="36" height="36"/>
<constraints>
<constraint firstAttribute="width" secondItem="Jkg-rm-wOk" secondAttribute="height" multiplier="1:1" id="LVF-JG-dsw"/>
<constraint firstAttribute="height" constant="36" id="aj5-Gb-1Vb"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vDG-nJ-QZz">
<rect key="frame" x="44" y="4" width="65.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="d9X-eq-uHF"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Yesterday" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sEL-3w-oE3">
<rect key="frame" x="44" y="22" width="50.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="jvG-rG-eWb"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="12"/>
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Jkg-rm-wOk" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" constant="4" id="28O-E1-Pjp"/>
<constraint firstItem="sEL-3w-oE3" firstAttribute="leading" secondItem="Jkg-rm-wOk" secondAttribute="trailing" constant="4" id="7Kd-os-E7N"/>
<constraint firstAttribute="trailing" secondItem="jxl-k0-sk3" secondAttribute="trailing" id="8AF-Zi-hKo"/>
<constraint firstItem="164-mZ-wNH" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" id="9AH-xP-hwY"/>
<constraint firstAttribute="trailing" secondItem="wRd-8q-nkJ" secondAttribute="trailing" constant="4" id="9yR-Xk-JP5"/>
<constraint firstItem="cIo-6y-f5u" firstAttribute="top" secondItem="yFG-lh-uur" secondAttribute="bottom" constant="8" id="FH9-7q-9hu"/>
<constraint firstItem="ZrK-Rs-q2D" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" id="IX6-0d-2oP"/>
<constraint firstItem="yFG-lh-uur" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" constant="4" id="JHv-qQ-IwU"/>
<constraint firstItem="cIo-6y-f5u" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" constant="16" id="JrH-UL-uGf"/>
<constraint firstItem="ZrK-Rs-q2D" firstAttribute="top" secondItem="Jkg-rm-wOk" secondAttribute="bottom" constant="4" id="LgI-fm-2RG"/>
<constraint firstItem="Jkg-rm-wOk" firstAttribute="top" secondItem="MeX-sp-hh3" secondAttribute="top" constant="4" id="Lzl-ks-H9Z"/>
<constraint firstItem="164-mZ-wNH" firstAttribute="top" secondItem="cIo-6y-f5u" secondAttribute="bottom" id="THx-ry-Ya7"/>
<constraint firstAttribute="trailing" secondItem="yFG-lh-uur" secondAttribute="trailing" constant="4" id="VcJ-k5-npJ"/>
<constraint firstAttribute="trailing" secondItem="ZrK-Rs-q2D" secondAttribute="trailing" id="WZU-d6-eeR"/>
<constraint firstAttribute="trailing" secondItem="164-mZ-wNH" secondAttribute="trailing" id="bAj-Ty-ya1"/>
<constraint firstItem="yFG-lh-uur" firstAttribute="top" secondItem="ZrK-Rs-q2D" secondAttribute="bottom" constant="8" id="bte-n9-5L2"/>
<constraint firstItem="vDG-nJ-QZz" firstAttribute="leading" secondItem="Jkg-rm-wOk" secondAttribute="trailing" constant="4" id="eWd-2p-Na8"/>
<constraint firstItem="jxl-k0-sk3" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" id="jus-u4-rpB"/>
<constraint firstItem="t2g-sN-oGm" firstAttribute="leading" secondItem="MeX-sp-hh3" secondAttribute="leading" constant="8" id="k8g-Wc-58v"/>
<constraint firstItem="vDG-nJ-QZz" firstAttribute="top" secondItem="MeX-sp-hh3" secondAttribute="top" constant="4" id="ra4-rS-zSW"/>
<constraint firstAttribute="trailing" secondItem="cIo-6y-f5u" secondAttribute="trailing" constant="16" id="uXP-O0-sg7"/>
<constraint firstItem="jxl-k0-sk3" firstAttribute="top" secondItem="164-mZ-wNH" secondAttribute="bottom" id="wdC-0T-uhi"/>
<constraint firstItem="sEL-3w-oE3" firstAttribute="top" secondItem="vDG-nJ-QZz" secondAttribute="bottom" id="x44-Qu-fDC"/>
<constraint firstItem="t2g-sN-oGm" firstAttribute="top" secondItem="cIo-6y-f5u" secondAttribute="bottom" id="x4Q-wl-IOO"/>
<constraint firstItem="wRd-8q-nkJ" firstAttribute="top" secondItem="MeX-sp-hh3" secondAttribute="top" constant="13" id="zOH-Dc-zKb"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.82745098039999998" green="0.83921568629999999" blue="0.85882352939999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="MeX-sp-hh3" secondAttribute="bottom" constant="8" id="4bt-aH-FuS"/>
<constraint firstItem="MeX-sp-hh3" firstAttribute="leading" secondItem="lUG-09-GcS" secondAttribute="leading" id="LP0-lp-ZBa"/>
<constraint firstAttribute="trailing" secondItem="MeX-sp-hh3" secondAttribute="trailing" id="cCC-jE-GgF"/>
<constraint firstItem="MeX-sp-hh3" firstAttribute="top" secondItem="lUG-09-GcS" secondAttribute="top" id="swj-No-m8z"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="avatarImageView" destination="Jkg-rm-wOk" id="VYS-pv-wT9"/>
<outlet property="facebookReactionButton" destination="t2g-sN-oGm" id="nJh-c8-Mlr"/>
<outlet property="feedbackLabel" destination="164-mZ-wNH" id="buu-nX-jub"/>
<outlet property="reactionSummary" destination="yFG-lh-uur" id="vLJ-Vz-r1b"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" rowHeight="270" id="Tgn-Ug-xKC" customClass="ReactionCellView" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="0.0" y="540" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Tgn-Ug-xKC" id="CT8-7D-JLP">
<rect key="frame" x="0.0" y="0.0" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="mW0-gJ-j4h">
<rect key="frame" x="0.0" y="0.0" width="375" height="262"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" insetsLayoutMarginsFromSafeArea="NO" image="facebook" translatesAutoresizingMaskIntoConstraints="NO" id="Rmv-64-OFE">
<rect key="frame" x="0.0" y="44" width="375" height="139"/>
<constraints>
<constraint firstAttribute="height" constant="139" id="BPK-hj-PNi"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MiE-R5-6AJ" customClass="ReactionSummary" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="4" y="191" width="367" height="25"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="2w8-Zx-F5g"/>
</constraints>
<connections>
<action selector="summaryTouchedAction:" destination="Tgn-Ug-xKC" eventType="touchUpInside" id="dxk-rK-uM9"/>
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gAr-c5-qDS" userLabel="TopLine">
<rect key="frame" x="16" y="224" width="343" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="lIg-Uq-x4k"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ldc-hq-RgB" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="8" y="224.5" width="114" height="38"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="38" id="Bx5-Lt-3QV"/>
<constraint firstAttribute="width" constant="114" id="Dtm-MX-919"/>
</constraints>
<connections>
<action selector="facebookButtonReactionTouchedUpAction:" destination="Tgn-Ug-xKC" eventType="touchUpInside" id="feL-t8-whq"/>
</connections>
</view>
<label userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JUV-Ec-HMj">
<rect key="frame" x="0.0" y="224.5" width="375" height="37"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="37" id="q5e-lD-EXW"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.50196081400000003" green="0.50196081400000003" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ao1-zX-4lL" userLabel="BottomLine">
<rect key="frame" x="0.0" y="261.5" width="375" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="4OW-xQ-gle"/>
</constraints>
</view>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="dots" translatesAutoresizingMaskIntoConstraints="NO" id="fSX-bd-sRr">
<rect key="frame" x="353" y="13" width="18" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="bNh-8p-rxB"/>
<constraint firstAttribute="width" secondItem="fSX-bd-sRr" secondAttribute="height" multiplier="1:1" id="rMa-KP-MSl"/>
</constraints>
</imageView>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="facebook_logo" translatesAutoresizingMaskIntoConstraints="NO" id="L6c-dY-PVN">
<rect key="frame" x="4" y="4" width="36" height="36"/>
<constraints>
<constraint firstAttribute="height" constant="36" id="SRu-wC-9ie"/>
<constraint firstAttribute="width" secondItem="L6c-dY-PVN" secondAttribute="height" multiplier="1:1" id="ro2-jU-S0A"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Kpt-gz-M9j">
<rect key="frame" x="44" y="4" width="65.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="zkU-X6-OpY"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Yesterday" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AaB-av-iDP">
<rect key="frame" x="44" y="22" width="50.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="ORL-he-zlf"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="12"/>
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="Kpt-gz-M9j" firstAttribute="top" secondItem="mW0-gJ-j4h" secondAttribute="top" constant="4" id="19W-fM-bBl"/>
<constraint firstAttribute="trailing" secondItem="MiE-R5-6AJ" secondAttribute="trailing" constant="4" id="5z4-XU-tUl"/>
<constraint firstItem="Ldc-hq-RgB" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" constant="8" id="72M-TU-28T"/>
<constraint firstItem="AaB-av-iDP" firstAttribute="leading" secondItem="L6c-dY-PVN" secondAttribute="trailing" constant="4" id="93x-bv-Hjd"/>
<constraint firstItem="L6c-dY-PVN" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" constant="4" id="AqR-we-cNP"/>
<constraint firstItem="MiE-R5-6AJ" firstAttribute="top" secondItem="Rmv-64-OFE" secondAttribute="bottom" constant="8" id="B6y-1R-jvi"/>
<constraint firstItem="Kpt-gz-M9j" firstAttribute="leading" secondItem="L6c-dY-PVN" secondAttribute="trailing" constant="4" id="BWE-E5-G0n"/>
<constraint firstAttribute="trailing" secondItem="fSX-bd-sRr" secondAttribute="trailing" constant="4" id="CVs-fv-wtf"/>
<constraint firstItem="Ao1-zX-4lL" firstAttribute="top" secondItem="JUV-Ec-HMj" secondAttribute="bottom" id="Djc-8e-qnP"/>
<constraint firstItem="JUV-Ec-HMj" firstAttribute="top" secondItem="gAr-c5-qDS" secondAttribute="bottom" id="IdE-Ad-NgK"/>
<constraint firstItem="JUV-Ec-HMj" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" id="JR5-Q0-3IQ"/>
<constraint firstAttribute="trailing" secondItem="gAr-c5-qDS" secondAttribute="trailing" constant="16" id="MaJ-Bz-076"/>
<constraint firstItem="MiE-R5-6AJ" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" constant="4" id="TPL-my-Mtv"/>
<constraint firstItem="gAr-c5-qDS" firstAttribute="top" secondItem="MiE-R5-6AJ" secondAttribute="bottom" constant="8" id="VPa-Ms-cPH"/>
<constraint firstItem="gAr-c5-qDS" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" constant="16" id="Yfu-PT-hC9"/>
<constraint firstItem="Ao1-zX-4lL" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" id="Yt6-L0-x5i"/>
<constraint firstAttribute="trailing" secondItem="JUV-Ec-HMj" secondAttribute="trailing" id="bVF-5u-Em6"/>
<constraint firstItem="Ldc-hq-RgB" firstAttribute="top" secondItem="gAr-c5-qDS" secondAttribute="bottom" id="bcJ-9a-bKT"/>
<constraint firstItem="Rmv-64-OFE" firstAttribute="leading" secondItem="mW0-gJ-j4h" secondAttribute="leading" id="cPh-ft-ljv"/>
<constraint firstItem="Rmv-64-OFE" firstAttribute="top" secondItem="L6c-dY-PVN" secondAttribute="bottom" constant="4" id="fXX-SW-lDa"/>
<constraint firstItem="fSX-bd-sRr" firstAttribute="top" secondItem="mW0-gJ-j4h" secondAttribute="top" constant="13" id="hev-hi-J5z"/>
<constraint firstItem="L6c-dY-PVN" firstAttribute="top" secondItem="mW0-gJ-j4h" secondAttribute="top" constant="4" id="l0h-sh-L0p"/>
<constraint firstAttribute="trailing" secondItem="Ao1-zX-4lL" secondAttribute="trailing" id="pUN-UW-FGT"/>
<constraint firstItem="AaB-av-iDP" firstAttribute="top" secondItem="Kpt-gz-M9j" secondAttribute="bottom" id="xK6-5f-CcL"/>
<constraint firstAttribute="trailing" secondItem="Rmv-64-OFE" secondAttribute="trailing" id="yCJ-Ge-iYR"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.82745098039999998" green="0.83921568629999999" blue="0.85882352939999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="mW0-gJ-j4h" firstAttribute="leading" secondItem="CT8-7D-JLP" secondAttribute="leading" id="9rL-H1-3P5"/>
<constraint firstItem="mW0-gJ-j4h" firstAttribute="top" secondItem="CT8-7D-JLP" secondAttribute="top" id="NbQ-4B-bpO"/>
<constraint firstAttribute="trailing" secondItem="mW0-gJ-j4h" secondAttribute="trailing" id="OU8-w6-TEw"/>
<constraint firstAttribute="bottom" secondItem="mW0-gJ-j4h" secondAttribute="bottom" constant="8" id="XCD-d9-lZ8"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="avatarImageView" destination="L6c-dY-PVN" id="hGi-LG-bgu"/>
<outlet property="facebookReactionButton" destination="Ldc-hq-RgB" id="zcA-Q9-BOo"/>
<outlet property="feedbackLabel" destination="JUV-Ec-HMj" id="9na-L7-Fp6"/>
<outlet property="reactionSummary" destination="MiE-R5-6AJ" id="pg0-tg-afL"/>
</connections>
</tableViewCell>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" rowHeight="270" id="vkB-89-R4R" customClass="ReactionCellView" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="0.0" y="810" width="375" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="vkB-89-R4R" id="Mc8-u6-Yf3">
<rect key="frame" x="0.0" y="0.0" width="375" height="269.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2Jb-yT-Wyl">
<rect key="frame" x="0.0" y="0.0" width="375" height="261.5"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" insetsLayoutMarginsFromSafeArea="NO" image="facebook" translatesAutoresizingMaskIntoConstraints="NO" id="oJ9-Ha-4QQ">
<rect key="frame" x="0.0" y="44" width="375" height="139"/>
<constraints>
<constraint firstAttribute="height" constant="139" id="wUL-2p-0el"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="E8f-Sh-gWp" customClass="ReactionSummary" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="4" y="191" width="367" height="25"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="K1x-UY-gvY"/>
</constraints>
<connections>
<action selector="summaryTouchedAction:" destination="vkB-89-R4R" eventType="touchUpInside" id="gJT-l5-jxQ"/>
</connections>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AOA-Oc-fff" userLabel="TopLine">
<rect key="frame" x="16" y="224" width="343" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="FfC-GR-3Ih"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="43u-ny-YGu" customClass="ReactionButton" customModule="ReactionsExample" customModuleProvider="target">
<rect key="frame" x="8" y="224.5" width="114" height="38"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="114" id="eUw-GM-fE4"/>
<constraint firstAttribute="height" constant="38" id="h4z-M2-A5I"/>
</constraints>
<connections>
<action selector="facebookButtonReactionTouchedUpAction:" destination="vkB-89-R4R" eventType="touchUpInside" id="bdZ-BR-8BG"/>
</connections>
</view>
<label userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Oor-Sw-fSw">
<rect key="frame" x="0.0" y="224.5" width="375" height="37"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="37" id="NCu-n2-Zoo"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Medium" family="Helvetica Neue" pointSize="14"/>
<color key="textColor" red="0.50196081400000003" green="0.50196081400000003" blue="0.50196081400000003" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rX8-4L-jgT" userLabel="BottomLine">
<rect key="frame" x="0.0" y="261.5" width="375" height="1"/>
<color key="backgroundColor" white="0.66666666669999997" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="height" constant="1" id="pYj-ru-e5Y"/>
</constraints>
</view>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="dots" translatesAutoresizingMaskIntoConstraints="NO" id="nPK-S1-0hw">
<rect key="frame" x="353" y="13" width="18" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="Q6r-Qx-YeW"/>
<constraint firstAttribute="width" secondItem="nPK-S1-0hw" secondAttribute="height" multiplier="1:1" id="fbe-Xz-E6x"/>
</constraints>
</imageView>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFit" insetsLayoutMarginsFromSafeArea="NO" image="facebook_logo" translatesAutoresizingMaskIntoConstraints="NO" id="evT-D4-WXK">
<rect key="frame" x="4" y="4" width="36" height="36"/>
<constraints>
<constraint firstAttribute="height" constant="36" id="lbO-Al-vxu"/>
<constraint firstAttribute="width" secondItem="evT-D4-WXK" secondAttribute="height" multiplier="1:1" id="qlw-kA-ti6"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Facebook" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="utf-Ex-8Hp">
<rect key="frame" x="44" y="4" width="65.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="ehM-A1-kzN"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Yesterday" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5En-kS-2Kd">
<rect key="frame" x="44" y="22" width="50.5" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="Khj-lw-EXW"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue-Light" family="Helvetica Neue" pointSize="12"/>
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="AOA-Oc-fff" secondAttribute="trailing" constant="16" id="30d-rL-dOe"/>
<constraint firstItem="E8f-Sh-gWp" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" constant="4" id="38U-8t-Eo4"/>
<constraint firstItem="43u-ny-YGu" firstAttribute="top" secondItem="AOA-Oc-fff" secondAttribute="bottom" id="4dv-dM-6qb"/>
<constraint firstItem="evT-D4-WXK" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" constant="4" id="68M-q1-GEd"/>
<constraint firstItem="AOA-Oc-fff" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" constant="16" id="8hg-76-knK"/>
<constraint firstItem="rX8-4L-jgT" firstAttribute="top" secondItem="Oor-Sw-fSw" secondAttribute="bottom" id="94L-N3-frj"/>
<constraint firstItem="Oor-Sw-fSw" firstAttribute="top" secondItem="AOA-Oc-fff" secondAttribute="bottom" id="B2h-mH-UOC"/>
<constraint firstItem="E8f-Sh-gWp" firstAttribute="top" secondItem="oJ9-Ha-4QQ" secondAttribute="bottom" constant="8" id="Lab-Sd-LMI"/>
<constraint firstItem="rX8-4L-jgT" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" id="Oye-O3-Y4Y"/>
<constraint firstItem="nPK-S1-0hw" firstAttribute="top" secondItem="2Jb-yT-Wyl" secondAttribute="top" constant="13" id="UF7-jH-Wug"/>
<constraint firstItem="5En-kS-2Kd" firstAttribute="leading" secondItem="evT-D4-WXK" secondAttribute="trailing" constant="4" id="USv-pB-hkz"/>
<constraint firstItem="utf-Ex-8Hp" firstAttribute="top" secondItem="2Jb-yT-Wyl" secondAttribute="top" constant="4" id="V9h-8p-nsG"/>
<constraint firstAttribute="trailing" secondItem="rX8-4L-jgT" secondAttribute="trailing" id="W5d-Hc-aZm"/>
<constraint firstItem="5En-kS-2Kd" firstAttribute="top" secondItem="utf-Ex-8Hp" secondAttribute="bottom" id="X4P-EC-8HY"/>
<constraint firstItem="oJ9-Ha-4QQ" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" id="Yah-LD-NI6"/>
<constraint firstItem="utf-Ex-8Hp" firstAttribute="leading" secondItem="evT-D4-WXK" secondAttribute="trailing" constant="4" id="aIf-Hx-SUa"/>
<constraint firstItem="Oor-Sw-fSw" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" id="aZe-Lc-TXn"/>
<constraint firstItem="43u-ny-YGu" firstAttribute="leading" secondItem="2Jb-yT-Wyl" secondAttribute="leading" constant="8" id="aoF-Ee-ytk"/>
<constraint firstAttribute="trailing" secondItem="nPK-S1-0hw" secondAttribute="trailing" constant="4" id="dWP-Ca-I4f"/>
<constraint firstAttribute="trailing" secondItem="oJ9-Ha-4QQ" secondAttribute="trailing" id="f2m-gI-JxI"/>
<constraint firstItem="oJ9-Ha-4QQ" firstAttribute="top" secondItem="evT-D4-WXK" secondAttribute="bottom" constant="4" id="g2n-wS-eAk"/>
<constraint firstAttribute="trailing" secondItem="E8f-Sh-gWp" secondAttribute="trailing" constant="4" id="jQl-Vr-JyK"/>
<constraint firstAttribute="trailing" secondItem="Oor-Sw-fSw" secondAttribute="trailing" id="qqv-2X-FUc"/>
<constraint firstItem="evT-D4-WXK" firstAttribute="top" secondItem="2Jb-yT-Wyl" secondAttribute="top" constant="4" id="qzQ-Kh-lwV"/>
<constraint firstItem="AOA-Oc-fff" firstAttribute="top" secondItem="E8f-Sh-gWp" secondAttribute="bottom" constant="8" id="rtl-Gp-siB"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" red="0.82745098039999998" green="0.83921568629999999" blue="0.85882352939999995" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="2Jb-yT-Wyl" secondAttribute="trailing" id="0rH-8z-770"/>
<constraint firstItem="2Jb-yT-Wyl" firstAttribute="leading" secondItem="Mc8-u6-Yf3" secondAttribute="leading" id="YE4-uD-p7V"/>
<constraint firstAttribute="bottom" secondItem="2Jb-yT-Wyl" secondAttribute="bottom" constant="8" id="af0-t0-apX"/>
<constraint firstItem="2Jb-yT-Wyl" firstAttribute="top" secondItem="Mc8-u6-Yf3" secondAttribute="top" id="eQo-x9-nKx"/>
</constraints>
</tableViewCellContentView>
<connections>
<outlet property="avatarImageView" destination="evT-D4-WXK" id="yXg-ic-He1"/>
<outlet property="facebookReactionButton" destination="43u-ny-YGu" id="rip-54-C4I"/>
<outlet property="feedbackLabel" destination="Oor-Sw-fSw" id="VlA-Kk-57o"/>
<outlet property="reactionSummary" destination="E8f-Sh-gWp" id="vNm-Ef-3Cv"/>
</connections>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="1ac-BN-GOL" id="7fo-9G-LUd"/>
<outlet property="delegate" destination="1ac-BN-GOL" id="WbI-0e-Fe2"/>
</connections>
</tableView>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="OKJ-if-bz0" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1581.5999999999999" y="-228.03598200899552"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="6XM-kQ-jUj">
<objects>
<navigationController id="JXt-pm-xzj" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="86e-8p-8HE">
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="8kH-FJ-po8"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="VNM-f7-NDc" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-202" y="-228"/>
</scene>
</scenes>
<resources>
<image name="dots" width="64" height="64"/>
<image name="facebook" width="600" height="225"/>
<image name="facebook_logo" width="112" height="112"/>
</resources>
</document>

View File

@ -15,7 +15,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>2.0.0</string>
<string>3.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>

View File

@ -0,0 +1,73 @@
//
// ReactionCellView.swift
// ReactionsExample
//
// Created by Yannick LORIOT on 20/08/2018.
// Copyright © 2018 Yannick Loriot. All rights reserved.
//
import Foundation
import UIKit
final class ReactionCellView: UITableViewCell {
@IBOutlet var avatarImageView: UIImageView! {
didSet {
avatarImageView.layer.masksToBounds = true
avatarImageView.layer.cornerRadius = 18
}
}
@IBOutlet weak var facebookReactionButton: ReactionButton! {
didSet {
facebookReactionButton.reactionSelector = ReactionSelector()
facebookReactionButton.config = ReactionButtonConfig() {
$0.iconMarging = 8
$0.spacing = 4
$0.font = UIFont(name: "HelveticaNeue", size: 14)
$0.neutralTintColor = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
$0.alignment = .left
}
facebookReactionButton.reactionSelector?.feedbackDelegate = self
}
}
@IBOutlet weak var reactionSummary: ReactionSummary! {
didSet {
reactionSummary.reactions = Reaction.facebook.all
reactionSummary.setDefaultText(withTotalNumberOfPeople: 4, includingYou: true)
reactionSummary.config = ReactionSummaryConfig {
$0.spacing = 8
$0.iconMarging = 2
$0.font = UIFont(name: "HelveticaNeue", size: 12)
$0.textColor = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
$0.alignment = .left
$0.isAggregated = true
}
}
}
@IBOutlet weak var feedbackLabel: UILabel! {
didSet {
feedbackLabel.isHidden = true
}
}
// Actions
@IBAction func facebookButtonReactionTouchedUpAction(_ sender: AnyObject) {
if facebookReactionButton.isSelected == false {
facebookReactionButton.reaction = Reaction.facebook.like
}
}
@IBAction func summaryTouchedAction(_ sender: AnyObject) {
facebookReactionButton.presentReactionSelector()
}
}
extension ReactionCellView: ReactionFeedbackDelegate {
func reactionFeedbackDidChanged(_ feedback: ReactionFeedback?) {
feedbackLabel.isHidden = feedback == nil
feedbackLabel.text = feedback?.localizedString
}
}

View File

@ -8,7 +8,7 @@
import UIKit
class ViewController: UIViewController, ReactionFeedbackDelegate {
class ViewController: UIViewController {
@IBOutlet weak var reactionSelect: ReactionSelector!
@IBOutlet weak var reactionButton: ReactionButton! {
didSet {
@ -18,40 +18,10 @@ class ViewController: UIViewController, ReactionFeedbackDelegate {
}
}
// Facebook like
override func viewDidLoad() {
super.viewDidLoad()
@IBOutlet weak var facebookReactionButton: ReactionButton! {
didSet {
facebookReactionButton.reactionSelector = ReactionSelector()
facebookReactionButton.config = ReactionButtonConfig() {
$0.iconMarging = 8
$0.spacing = 4
$0.font = UIFont(name: "HelveticaNeue", size: 14)
$0.neutralTintColor = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
$0.alignment = .left
}
facebookReactionButton.reactionSelector?.feedbackDelegate = self
}
}
@IBOutlet weak var reactionSummary: ReactionSummary! {
didSet {
reactionSummary.reactions = Reaction.facebook.all
reactionSummary.setDefaultText(withTotalNumberOfPeople: 4, includingYou: true)
reactionSummary.config = ReactionSummaryConfig {
$0.spacing = 8
$0.iconMarging = 2
$0.font = UIFont(name: "HelveticaNeue", size: 12)
$0.textColor = UIColor(red: 0.47, green: 0.47, blue: 0.47, alpha: 1)
$0.alignment = .left
$0.isAggregated = true
}
}
}
@IBOutlet weak var feedbackLabel: UILabel! {
didSet {
feedbackLabel.isHidden = true
}
self.title = "Reactions"
}
// MARK: - Action Methods
@ -62,23 +32,5 @@ class ViewController: UIViewController, ReactionFeedbackDelegate {
reactionButton.reaction = reaction
reactionButton.isSelected = false
}
@IBAction func facebookButtonReactionTouchedUpAction(_ sender: AnyObject) {
if facebookReactionButton.isSelected == false {
facebookReactionButton.reaction = Reaction.facebook.like
}
}
@IBAction func summaryTouchedAction(_ sender: AnyObject) {
facebookReactionButton.presentReactionSelector()
}
// MARK: - ReactionFeedback Methods
func reactionFeedbackDidChanged(_ feedback: ReactionFeedback?) {
feedbackLabel.isHidden = feedback == nil
feedbackLabel.text = feedback?.localizedString
}
}

View File

@ -1,31 +1,24 @@
//
// Reactions
//
// Copyright 2016-present Yannick Loriot.
// http://yannickloriot.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// swift-tools-version:5.0
import PackageDescription
let package = Package(
name: "Reactions"
name: "Reactions",
platforms: [
.iOS(.v11)
],
products: [
.library(name: "Reactions", targets: ["Reactions"]),
],
targets: [
.target(
name: "Reactions",
dependencies: [],
path: "Sources"),
.testTarget(
name: "ReactionsTests",
dependencies: ["Reactions"],
path: "Tests"),
]
)

View File

@ -26,7 +26,7 @@
- iOS 8.0+
- Xcode 9.0+
- Swift 4.0+
- Swift 4.2+
## Usage
@ -100,7 +100,7 @@ button.reactionSelector = ReactionSelector()
You can configure the component using a `ReactionButtonConfig` object:
```swift
button.config = ReactionButtonConfig() {
button.config = ReactionButtonConfig() {
$0.iconMarging = 8
$0.spacing = 4
$0.font = UIFont(name: "HelveticaNeue", size: 14)
@ -167,7 +167,7 @@ source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Reactions', '~> 2.0.0'
pod 'Reactions', '~> 3.0.0'
```
Install into your project:
@ -198,7 +198,7 @@ $ brew install carthage
To integrate `Reactions` into your Xcode project using Carthage, specify it in your `Cartfile` file:
```ogdl
github "yannickl/Reactions" >= 2.0.0
github "yannickl/Reactions" >= 3.0.0
```
#### Swift Package Manager
@ -211,7 +211,7 @@ let package = Package(
name: "YOUR_PROJECT_NAME",
targets: [],
dependencies: [
.Package(url: "https://github.com/yannickl/Reactions.git", versions: "2.0.0" ..< Version.max)
.Package(url: "https://github.com/yannickl/Reactions.git", versions: "3.0.0" ..< Version.max)
]
)
```

View File

@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'Reactions'
s.version = '2.0.0'
s.version = '3.0.0'
s.license = 'MIT'
s.summary = 'Fully customizable Facebook reactions control'
s.homepage = 'https://github.com/yannickl/Reactions'

View File

@ -154,8 +154,8 @@ final class CAReactionSummaryLayer: CALayer {
private func sizeForText(_ text: String) -> CGSize {
let attributedText = NSAttributedString(string: text, attributes: [
NSAttributedStringKey.font: config.font,
NSAttributedStringKey.foregroundColor: config.textColor
NSAttributedString.Key.font: config.font!,
NSAttributedString.Key.foregroundColor: config.textColor!
])
return attributedText.size()

View File

@ -40,7 +40,7 @@ struct Components {
let font = UIFont(name: "HelveticaNeue", size: 10) ?? .systemFont(ofSize: 10)
let size = CGSize(width: 200, height: 200)
let attributes = [NSAttributedStringKey.font: font] as [NSAttributedStringKey: Any]
let attributes = [NSAttributedString.Key.font: font] as [NSAttributedString.Key: Any]
let bounds = title.boundingRect(with: size, options: [], attributes: attributes, context: nil)
return UILabel().build {

View File

@ -78,9 +78,8 @@ extension Reaction: Equatable {
}
extension Reaction: Hashable {
/// The hash value.
public var hashValue: Int {
return id.hashValue
public func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}

View File

@ -90,7 +90,7 @@ public final class ReactionSelector: UIReactionControl {
get { return stateSelectedReaction }
set {
if let reaction = newValue, config.stickyReaction {
stateHighlightedReactionIndex = reactions.index(of: reaction)
stateHighlightedReactionIndex = reactions.firstIndex(of: reaction)
}
else {
stateHighlightedReactionIndex = nil
@ -134,14 +134,14 @@ public final class ReactionSelector: UIReactionControl {
let backgroundPath = UIBezierPath(roundedRect: backgroundBounds, cornerRadius: backgroundBounds.height / 2).cgPath
CATransaction.begin()
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut))
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut))
CATransaction.setCompletionBlock { [weak self] in
self?.backgroundLayer.path = backgroundPath
}
let pathAnimation = CABasicAnimation(keyPath: "path").build {
$0.toValue = backgroundPath
$0.fillMode = kCAFillModeBoth
$0.fillMode = CAMediaTimingFillMode.both
$0.isRemovedOnCompletion = false
}

View File

@ -63,6 +63,9 @@ public final class ReactionSummary: UIReactionControl {
}
}
/** Size that just encloses its subviews. */
public private(set) var sizeToFit: CGSize = .zero
// MARK: - Localizing Default Summary Text
/**
@ -166,6 +169,7 @@ public final class ReactionSummary: UIReactionControl {
textLabel.frame = CGRect(x: textLabelX, y: 0, width: textLabelWidth, height: bounds.height)
summaryLayer.frame = CGRect(x: summaryLayerX, y: 0, width: summaryLayerSize.width, height: bounds.height)
sizeToFit = textLabel.frame.union(summaryLayer.frame).size
}
// MARK: - Responding to Gesture Events

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class CAReactionSummaryLayerTests: XCTestCase {
func testSetConfig() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionButtonTests: XCTestCase {
func testReactionButton() {
@ -141,10 +142,13 @@ class ReactionButtonTests: XCTestCase {
func testLongPressButtonWithSelector() {
class PressBeganGesture: UILongPressGestureRecognizer {
var currentState: UIGestureRecognizerState = .began
var currentState: UIGestureRecognizer.State = .began
override var state: UIGestureRecognizerState {
return currentState
override var state: UIGestureRecognizer.State {
get {
return currentState
}
set {}
}
}
@ -178,13 +182,16 @@ class ReactionButtonTests: XCTestCase {
func testLongPressReactionSelector() {
class PressBeganGesture: UILongPressGestureRecognizer {
var currentState: UIGestureRecognizerState = .began
var currentState: UIGestureRecognizer.State = .began
override var state: UIGestureRecognizerState {
return currentState
override var state: UIGestureRecognizer.State {
get {
return currentState
}
set {}
}
private override func location(in view: UIView?) -> CGPoint {
override func location(in view: UIView?) -> CGPoint {
return CGPoint(x: 10, y: 10)
}
}

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionFeedbackTests: XCTestCase {
func testLocalizedFeeback() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionSelectorConfigTests: XCTestCase {
func testComputedIconSize() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionSelectorTests: XCTestCase {
func testSetConfig() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionSummaryTests: XCTestCase {
func testInit() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class ReactionTests: XCTestCase {
func testFacebookReaction() {

View File

@ -25,6 +25,7 @@
*/
import XCTest
@testable import Reactions
class UIReactionControlTests: XCTestCase {
func testUIReactionControlInit() {