Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(245)

Side by Side Diff: ios/chrome/browser/ui/suggestions/suggestions_article_item.mm

Issue 2618333005: Suggestions UI - Add Article items (Closed)
Patch Set: Rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "ios/chrome/browser/ui/suggestions/suggestions_article_item.h"
6
7 #import "ios/chrome/browser/ui/uikit_ui_util.h"
8
9 #if !defined(__has_feature) || !__has_feature(objc_arc)
10 #error "This file requires ARC support."
11 #endif
12
13 namespace {
14 const CGFloat kImageSize = 100;
15 }
16
17 @implementation SuggestionsArticleItem {
18 NSString* _title;
19 NSString* _subtitle;
lpromero 2017/01/11 13:00:39 Idem as previous CL, prefer properties with copy a
gambard 2017/01/11 17:14:45 Done.
20 UIImage* _image;
21 }
22
23 - (instancetype)initWithType:(NSInteger)type
24 title:(NSString*)title
25 subtitle:(NSString*)subtitle
26 image:(UIImage*)image {
27 self = [super initWithType:type];
28 if (self) {
29 self.cellClass = [SuggestionsArticleCell class];
30 _title = title;
lpromero 2017/01/11 13:00:39 Should be copy. Same below.
gambard 2017/01/11 17:14:45 Done.
31 _subtitle = subtitle;
32 _image = image;
33 }
34 return self;
35 }
36
37 - (void)configureCell:(SuggestionsArticleCell*)cell {
38 [super configureCell:cell];
39 cell.title = _title;
40 cell.subtitle = _subtitle;
41 cell.image = _image;
42 }
43
44 @end
45
46 @interface SuggestionsArticleCell () {
47 UIImageView* _imageView;
48 UILabel* _titleLabel;
49 UILabel* _subtitleLabel;
50 UIView* _imageContainer;
51 }
52
53 @end
54
55 @implementation SuggestionsArticleCell
56
57 @synthesize title = _title;
58 @synthesize subtitle = _subtitle;
59 @synthesize image = _image;
60
61 - (instancetype)initWithFrame:(CGRect)frame {
62 self = [super initWithFrame:frame];
63 if (self) {
64 _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
65 _subtitleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
66 _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
67 _imageContainer = [[UIView alloc] initWithFrame:CGRectZero];
68
69 _subtitleLabel.numberOfLines = 0;
70
71 _imageContainer.translatesAutoresizingMaskIntoConstraints = NO;
72 _imageView.translatesAutoresizingMaskIntoConstraints = NO;
73 _titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
74 _subtitleLabel.translatesAutoresizingMaskIntoConstraints = NO;
75
76 [_imageContainer addSubview:_imageView];
77 [self.contentView addSubview:_imageContainer];
78 [self.contentView addSubview:_titleLabel];
79 [self.contentView addSubview:_subtitleLabel];
80
81 ApplyVisualConstraintsWithMetrics(
82 @[
83 @"H:|-[title]-[imageContainer(imageSize)]-|",
84 @"H:|[image(imageSize)]", @"H:|-[text]-[imageContainer]",
85 @"V:|[image(imageSize)]", @"V:|-[title]-[text]-|",
86 @"V:|-[imageContainer(>=imageSize)]-|"
87 ],
88 @{
89 @"image" : _imageView,
90 @"imageContainer" : _imageContainer,
91 @"title" : _titleLabel,
92 @"text" : _subtitleLabel
93 },
94 @{ @"imageSize" : @(kImageSize) });
95 }
96 return self;
97 }
98
99 #pragma mark - Properties
100
101 - (void)setTitle:(NSString*)title {
102 _titleLabel.text = title;
103 _title = title;
lpromero 2017/01/11 13:00:39 Do you need the cell to keep those? You could just
gambard 2017/01/11 17:14:45 Done.
104 }
105
106 - (void)setSubtitle:(NSString*)subtitle {
107 _subtitleLabel.text = subtitle;
108 _subtitle = subtitle;
109 }
110
111 - (void)setImage:(UIImage*)image {
112 _imageView.image = image;
113 _image = image;
114 }
115
116 #pragma mark - UIView
117
118 // Implements -layoutSubviews as per instructions in documentation for
119 // +[MDCCollectionViewCell cr_preferredHeightForWidth:forItem:].
120 - (void)layoutSubviews {
121 [super layoutSubviews];
122
123 // Adjust the text label preferredMaxLayoutWidth when the parent's width
124 // changes, for instance on screen rotation.
125 CGFloat parentWidth = CGRectGetWidth(self.contentView.bounds);
126 _subtitleLabel.preferredMaxLayoutWidth = parentWidth - kImageSize - 3 * 8;
127
128 // Re-layout with the new preferred width to allow the label to adjust its
129 // height.
130 [super layoutSubviews];
131 }
132
133 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698