Commit 02277966 authored by Felix Paul Kühne's avatar Felix Paul Kühne

Clouds: integrate with MetaDataFetcherKit and switch to VLCNetworkImageView

parent 305da8df
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9058" systemVersion="15B30a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9527.1" systemVersion="15C27e" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<development version="5000" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9048"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9525.1"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<objects>
......@@ -16,9 +16,8 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="79.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4">
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="VLCNetworkImageView">
<rect key="frame" x="5" y="8" width="64" height="64"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="64" id="Iwi-eh-7B1"/>
<constraint firstAttribute="width" constant="64" id="qDV-qh-2Z2"/>
......@@ -26,28 +25,24 @@
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="File Title" lineBreakMode="tailTruncation" baselineAdjustment="none" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
<rect key="frame" x="83" y="21" width="64" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Folder Title" lineBreakMode="tailTruncation" baselineAdjustment="none" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23">
<rect key="frame" x="83" y="29" width="86" height="21"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitle — Subtitle" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7">
<rect key="frame" x="83" y="44" width="106" height="15"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="VuV-6r-r3f">
<rect key="frame" x="268" y="24" width="32" height="32"/>
<animations/>
<constraints>
<constraint firstAttribute="width" constant="32" id="Soh-Xq-7UR"/>
<constraint firstAttribute="height" constant="32" id="ala-wX-3I7"/>
......@@ -65,7 +60,6 @@
</connections>
</button>
</subviews>
<animations/>
<constraints>
<constraint firstItem="7" firstAttribute="leading" secondItem="4" secondAttribute="trailing" constant="14" id="1TH-PQ-JeX"/>
<constraint firstItem="6" firstAttribute="top" secondItem="StH-9P-AYV" secondAttribute="topMargin" constant="13" id="1WQ-Ow-ZdV"/>
......@@ -79,7 +73,6 @@
<constraint firstItem="VuV-6r-r3f" firstAttribute="centerY" secondItem="StH-9P-AYV" secondAttribute="centerY" id="xuG-RQ-ujX"/>
</constraints>
</tableViewCellContentView>
<animations/>
<connections>
<outlet property="downloadButton" destination="VuV-6r-r3f" id="K9G-fy-OwZ"/>
<outlet property="folderTitleLabel" destination="23" id="24"/>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9058" systemVersion="15B30a" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9527.1" systemVersion="15C27e" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="iOS"/>
<development version="5000" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9048"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9525.1"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<objects>
......@@ -16,9 +16,8 @@
<rect key="frame" x="0.0" y="0.0" width="320" height="47.5"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4">
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4" customClass="VLCNetworkImageView">
<rect key="frame" x="5" y="8" width="32" height="32"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="32" id="8sh-hN-G1h"/>
<constraint firstAttribute="width" constant="32" id="UDp-Hy-iQT"/>
......@@ -28,28 +27,24 @@
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="File Title" lineBreakMode="tailTruncation" baselineAdjustment="none" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6">
<rect key="frame" x="45" y="8" width="55" height="17"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Folder Title" lineBreakMode="tailTruncation" baselineAdjustment="none" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="23">
<rect key="frame" x="45" y="15.5" width="73" height="17"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Subtitle — Subtitle" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" useAutomaticPreferredMaxLayoutWidth="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7">
<rect key="frame" x="45" y="26.5" width="106" height="15"/>
<animations/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<color key="highlightedColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="661-nY-3Tr">
<rect key="frame" x="283" y="8" width="32" height="32"/>
<animations/>
<constraints>
<constraint firstAttribute="height" constant="32" id="81d-I9-5xt"/>
<constraint firstAttribute="width" constant="32" id="jiF-Ov-RGW"/>
......@@ -67,7 +62,6 @@
</connections>
</button>
</subviews>
<animations/>
<constraints>
<constraint firstAttribute="trailingMargin" secondItem="661-nY-3Tr" secondAttribute="trailing" constant="-3" id="53c-NY-VW4"/>
<constraint firstItem="661-nY-3Tr" firstAttribute="centerY" secondItem="Tip-yB-5Gh" secondAttribute="centerY" id="87e-tn-W3Z"/>
......@@ -81,7 +75,6 @@
<constraint firstItem="6" firstAttribute="leading" secondItem="4" secondAttribute="trailing" constant="8" id="rrY-Y1-Ttv"/>
</constraints>
</tableViewCellContentView>
<animations/>
<connections>
<outlet property="downloadButton" destination="661-nY-3Tr" id="ehk-e3-y2O"/>
<outlet property="folderTitleLabel" destination="23" id="24"/>
......
......@@ -42,7 +42,6 @@
return self;
}
#pragma mark -
- (NSByteCountFormatter *)byteCounterFormatter {
if (!_byteCountFormatter) {
......
......@@ -18,6 +18,8 @@
#import "GTLDrive.h"
#endif
@class VLCNetworkImageView;
@interface VLCCloudStorageTableViewCell : UITableViewCell
@property (nonatomic, weak) id delegate;
......@@ -25,7 +27,7 @@
@property (nonatomic, strong) IBOutlet UILabel *titleLabel;
@property (nonatomic, strong) IBOutlet UILabel *folderTitleLabel;
@property (nonatomic, strong) IBOutlet UILabel *subtitleLabel;
@property (nonatomic, strong) IBOutlet UIImageView *thumbnailView;
@property (nonatomic, strong) IBOutlet VLCNetworkImageView *thumbnailView;
@property (nonatomic, strong) IBOutlet UIButton *downloadButton;
@property (nonatomic, retain) DBMetadata *dropboxFile;
......
......@@ -12,11 +12,18 @@
*****************************************************************************/
#import "VLCCloudStorageTableViewCell.h"
@interface VLCCloudStorageTableViewCell ()
#import "VLCNetworkImageView.h"
#if TARGET_OS_TV
#import "MetaDataFetcherKit.h"
#endif
#if TARGET_OS_TV
@interface VLCCloudStorageTableViewCell () <MDFMovieDBFetcherDataRecipient>
{
NSURL *_iconURL;
MDFMovieDBFetcher *_metadataFetcher;
}
@end
#endif
@implementation VLCCloudStorageTableViewCell
......@@ -31,9 +38,25 @@
cell.subtitleLabel.hidden = YES;
cell.folderTitleLabel.hidden = YES;
#if TARGET_OS_TV
[cell prepareForReuse];
#endif
return cell;
}
#if TARGET_OS_TV
- (void)prepareForReuse
{
if (_metadataFetcher) {
[_metadataFetcher cancelAllRequests];
} else {
_metadataFetcher = [[MDFMovieDBFetcher alloc] init];
_metadataFetcher.dataRecipient = self;
}
}
#endif
- (void)setDropboxFile:(DBMetadata *)dropboxFile
{
if (dropboxFile != _dropboxFile)
......@@ -80,7 +103,11 @@
self.titleLabel.hidden = self.subtitleLabel.hidden = YES;
self.folderTitleLabel.hidden = NO;
} else {
self.titleLabel.text = self.dropboxFile.filename;
NSString *title = self.dropboxFile.filename;
self.titleLabel.text = title;
#if TARGET_OS_TV
[_metadataFetcher searchForMovie:title];
#endif
self.subtitleLabel.text = (self.dropboxFile.totalBytes > 0) ? self.dropboxFile.humanReadableSize : @"";
self.titleLabel.hidden = self.subtitleLabel.hidden = NO;
self.folderTitleLabel.hidden = YES;
......@@ -109,14 +136,20 @@
self.titleLabel.hidden = self.subtitleLabel.hidden = YES;
self.folderTitleLabel.hidden = NO;
} else {
self.titleLabel.text = self.driveFile.title;
NSString *title = self.driveFile.title;
self.titleLabel.text = title;
self.subtitleLabel.text = (self.driveFile.fileSize > 0) ? [NSByteCountFormatter stringFromByteCount:[self.driveFile.fileSize longLongValue] countStyle:NSByteCountFormatterCountStyleFile]: @"";
self.titleLabel.hidden = self.subtitleLabel.hidden = NO;
self.folderTitleLabel.hidden = YES;
}
if (_driveFile.thumbnailLink != nil) {
_iconURL = [NSURL URLWithString:_driveFile.thumbnailLink];
[self performSelectorInBackground:@selector(_updateIconFromURL) withObject:@""];
if (_driveFile.thumbnailLink != nil) {
[self.thumbnailView setImageWithURL:[NSURL URLWithString:_driveFile.thumbnailLink]];
}
#if TARGET_OS_TV
else {
[_metadataFetcher searchForMovie:title];
}
#endif
}
NSString *iconName = self.driveFile.iconLink;
if (isDirectory) {
......@@ -138,7 +171,11 @@
self.titleLabel.hidden = self.subtitleLabel.hidden = YES;
self.folderTitleLabel.hidden = NO;
} else {
self.titleLabel.text = self.boxFile.name;
NSString *title = self.boxFile.name;
self.titleLabel.text = title;
#if TARGET_OS_TV
[_metadataFetcher searchForMovie:title];
#endif
self.subtitleLabel.text = (self.boxFile.size > 0) ? [NSByteCountFormatter stringFromByteCount:[self.boxFile.size longLongValue] countStyle:NSByteCountFormatterCountStyleFile]: @"";
self.titleLabel.hidden = self.subtitleLabel.hidden = NO;
self.folderTitleLabel.hidden = YES;
......@@ -148,8 +185,7 @@
// if (_boxFile.modelID != nil) {
// //this request needs a token in the header to work
// NSString *thumbnailURLString = [NSString stringWithFormat:@"https://api.box.com/2.0/files/%@/thumbnail.png?min_height=32&min_width=32&max_height=64&max_width=64", _boxFile.modelID];
// _iconURL = [NSURL URLWithString:thumbnailURLString];
// [self performSelectorInBackground:@selector(_updateIconFromURL) withObject:@""];
// [self.thumbnailView setImageWithURL:[NSURL URLWithString:thumbnailURLString]];
// }
//TODO:correct icons
if (isDirectory) {
......@@ -167,8 +203,26 @@
self.thumbnailView.image = [UIImage imageNamed:@"folder"];
} else {
self.downloadButton.hidden = NO;
self.titleLabel.text = self.oneDriveFile.name;
NSString *title = self.oneDriveFile.name;
self.titleLabel.text = title;
NSMutableString *subtitle = [[NSMutableString alloc] init];
if (self.oneDriveFile.isAudio)
self.thumbnailView.image = [UIImage imageNamed:@"audio"];
else if (self.oneDriveFile.isVideo) {
self.thumbnailView.image = [UIImage imageNamed:@"movie"];
NSString *thumbnailURLString = _oneDriveFile.thumbnailURL;
if (thumbnailURLString) {
[self.thumbnailView setImageWithURL:[NSURL URLWithString:thumbnailURLString]];
}
#if TARGET_OS_TV
else {
[_metadataFetcher searchForMovie:title];
}
#endif
} else
self.thumbnailView.image = [UIImage imageNamed:@"blank"];
if (self.oneDriveFile.size > 0) {
[subtitle appendString:[NSByteCountFormatter stringFromByteCount:[self.oneDriveFile.size longLongValue] countStyle:NSByteCountFormatterCountStyleFile]];
if (self.oneDriveFile.duration > 0) {
......@@ -182,40 +236,12 @@
self.subtitleLabel.text = subtitle;
self.titleLabel.hidden = self.subtitleLabel.hidden = NO;
self.folderTitleLabel.hidden = YES;
if (self.oneDriveFile.isAudio)
self.thumbnailView.image = [UIImage imageNamed:@"audio"];
else if (self.oneDriveFile.isVideo) {
self.thumbnailView.image = [UIImage imageNamed:@"movie"];
NSString *thumbnailURL = _oneDriveFile.thumbnailURL;
if ([thumbnailURL isKindOfClass:[NSString class]]) {
if (thumbnailURL.length > 0) {
_iconURL = [NSURL URLWithString:thumbnailURL];
[self performSelectorInBackground:@selector(_updateIconFromURL) withObject:@""];
}
}
} else
self.thumbnailView.image = [UIImage imageNamed:@"blank"];
}
}
[self setNeedsDisplay];
}
- (void)_updateIconFromURL
{
NSData *imageData = [[NSData alloc] initWithContentsOfURL:_iconURL];
UIImage *icon = [[UIImage alloc] initWithData:imageData];
if (icon != nil) {
[self performSelectorOnMainThread:@selector(_updateIconOnMainThread:) withObject:icon waitUntilDone:NO];
}
}
- (void)_updateIconOnMainThread:(UIImage *)icon
{
self.thumbnailView.contentMode = UIViewContentModeScaleAspectFit;
self.thumbnailView.image = icon;
}
- (IBAction)triggerDownload:(id)sender
{
if ([self.delegate respondsToSelector:@selector(triggerDownloadForCell:)])
......@@ -239,4 +265,66 @@
self.downloadButton.hidden = !isDownloadable;
}
#if TARGET_OS_TV
- (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFindMovie:(MDFMovie *)details forSearchRequest:(NSString *)searchRequest
{
if (details == nil)
return;
[aFetcher cancelAllRequests];
MDFMovieDBSessionManager *sessionManager = [MDFMovieDBSessionManager sharedInstance];
if (!sessionManager.hasFetchedProperties)
return;
if (details.movieDBID == 0) {
/* we found nothing, let's see if it's a TV show */
[_metadataFetcher searchForTVShow:searchRequest];
return;
}
NSString *imagePath = details.posterPath;
if (!imagePath)
imagePath = details.backdropPath;
if (!imagePath)
return;
NSString *thumbnailURLString = [NSString stringWithFormat:@"%@%@%@",
sessionManager.imageBaseURL,
sessionManager.posterSizes.firstObject,
details.posterPath];
[self.thumbnailView setImageWithURL:[NSURL URLWithString:thumbnailURLString]];
}
- (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFailToFindMovieForSearchRequest:(NSString *)searchRequest
{
APLog(@"Failed to find a movie for '%@'", searchRequest);
}
-(void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFindTVShow:(MDFTVShow *)details forSearchRequest:(NSString *)searchRequest
{
if (details == nil)
return;
[aFetcher cancelAllRequests];
MDFMovieDBSessionManager *sessionManager = [MDFMovieDBSessionManager sharedInstance];
if (!sessionManager.hasFetchedProperties)
return;
NSString *imagePath = details.posterPath;
if (!imagePath)
imagePath = details.backdropPath;
if (!imagePath)
return;
NSString *thumbnailURLString = [NSString stringWithFormat:@"%@%@%@",
sessionManager.imageBaseURL,
sessionManager.posterSizes.firstObject,
details.posterPath];
[self.thumbnailView setImageWithURL:[NSURL URLWithString:thumbnailURLString]];
}
- (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFailToFindTVShowForSearchRequest:(NSString *)searchRequest
{
APLog(@"failed to find TV show");
}
#endif
@end
......@@ -19,6 +19,7 @@
#import "VLCOneDriveTableViewController2.h"
#import "VLCBoxTableViewController.h"
#import "VLCBoxController.h"
#import "MetaDataFetcherKit.h"
@interface VLCCloudServicesTVViewController ()
{
......@@ -41,6 +42,10 @@
[center addObserver:self selector:@selector(oneDriveSessionUpdated:) name:VLCOneDriveControllerSessionUpdated object:nil];
[center addObserver:self selector:@selector(boxSessionUpdated:) name:VLCBoxControllerSessionUpdated object:nil];
MDFMovieDBSessionManager *movieDBSessionManager = [MDFMovieDBSessionManager sharedInstance];
movieDBSessionManager.apiKey = kVLCfortvOSMovieDBKey;
[movieDBSessionManager fetchProperties];
_oneDriveController = [VLCOneDriveController sharedInstance];
_boxController = [VLCBoxController sharedInstance];
[_boxController startSession];
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder.AppleTV.XIB" version="3.0" toolsVersion="9059" systemVersion="15B42" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<document type="com.apple.InterfaceBuilder.AppleTV.XIB" version="3.0" toolsVersion="9527.1" systemVersion="15C27e" targetRuntime="AppleTV" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9049"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9525.1"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<objects>
......@@ -14,9 +14,8 @@
<rect key="frame" x="0.0" y="0.0" width="784" height="107"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="XK7-9R-AfJ">
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="XK7-9R-AfJ" customClass="VLCNetworkImageView">
<rect key="frame" x="8" y="8" width="91" height="91"/>
<animations/>
<constraints>
<constraint firstAttribute="width" constant="91" id="Skw-hL-8l1"/>
<constraint firstAttribute="height" constant="91" id="j8j-bJ-vpn"/>
......@@ -24,27 +23,23 @@
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="744-48-gFJ">
<rect key="frame" x="107" y="36" width="70" height="35"/>
<animations/>
<fontDescription key="fontDescription" style="UICTFontTextStyleSubhead"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vhO-YQ-1Od">
<rect key="frame" x="107" y="17" width="70" height="35"/>
<animations/>
<fontDescription key="fontDescription" style="UICTFontTextStyleSubhead"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="97b-un-sxc">
<rect key="frame" x="107" y="60" width="61" height="30"/>
<animations/>
<fontDescription key="fontDescription" style="UICTFontTextStyleCaption1"/>
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<animations/>
<constraints>
<constraint firstItem="97b-un-sxc" firstAttribute="top" secondItem="vhO-YQ-1Od" secondAttribute="bottom" constant="8" id="1Qb-AX-mTz"/>
<constraint firstAttribute="bottomMargin" secondItem="XK7-9R-AfJ" secondAttribute="bottom" id="3WS-Wk-Fkr"/>
......@@ -64,7 +59,6 @@
</mask>
</variation>
</tableViewCellContentView>
<animations/>
<connections>
<outlet property="folderTitleLabel" destination="744-48-gFJ" id="bnU-2b-StB"/>
<outlet property="subtitleLabel" destination="97b-un-sxc" id="1oY-Ma-O6S"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment