Skip to content

Commit 608fe73

Browse files
Alfredo UribeAlfredo Uribe
authored andcommitted
added gradient layers
added stand in button to go to newest item
1 parent 0f458aa commit 608fe73

3 files changed

Lines changed: 122 additions & 71 deletions

File tree

EasyReader/Application/Api/CSFakedDataRequestor.m

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -149,17 +149,21 @@ - (NSDictionary *) feedItemsResponse
149149
@"created_at": @"2014-03-05T22:32:41+00:00",
150150
@"updated_at": @"2014-03-05T22:32:41+00:00",
151151
@"published_at": @"2014-03-04T19:52:21+00:00"}, nil];
152-
153-
NSRange subarrayRange;
154-
if ( !self.requestCounter ) self.requestCounter = 1;
155-
if ( self.requestCounter == 1 ){
156-
subarrayRange = NSMakeRange(0,4);
152+
153+
NSRange subarrayRange;
154+
if ( !self.requestCounter ) self.requestCounter = 1;
155+
if ( self.requestCounter == 1 ){
156+
subarrayRange = NSMakeRange(0,6);
157+
} else {
158+
if( [items count] > self.requestCounter*2 ){
159+
subarrayRange = NSMakeRange(self.requestCounter*2,2);
157160
} else {
158-
subarrayRange = NSMakeRange(self.requestCounter*2,2);
161+
subarrayRange = NSMakeRange(8,2);
159162
}
160-
self.requestCounter++;
161-
162-
return @{@"feed_items": [items subarrayWithRange:subarrayRange]};
163+
}
164+
self.requestCounter++;
165+
166+
return @{@"feed_items": [items subarrayWithRange:subarrayRange]};
163167
}
164168

165169

EasyReader/Application/Controllers/Home/CSHomeViewController.m

Lines changed: 95 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -47,62 +47,65 @@ - (void)viewDidLayoutSubviews
4747

4848
- (void) setupFeedItemObserver
4949
{
50-
_currentUser = [User current];
51-
[self observeRelationship:@keypath(self.currentUser.feeds)
52-
changeBlock:^(__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
53-
NSMutableArray *addedFeeds = [[new allObjects] mutableCopy];
54-
NSMutableArray *removedFeeds = [[old allObjects] mutableCopy];
55-
56-
[addedFeeds removeObjectsInArray:[old allObjects]];
57-
[removedFeeds removeObjectsInArray:[new allObjects]];
58-
59-
for ( Feed *feed in removedFeeds ){
60-
[feed removeAllObservations];
61-
}
62-
63-
for ( Feed *feed in addedFeeds ){
64-
[feed observeRelationship:@"feedItems"
65-
changeBlock:^(__weak Feed *feed, NSSet *old, NSSet *new) {
50+
_currentUser = [User current];
51+
52+
[self observeRelationship:@keypath(self.currentUser.feeds)
53+
changeBlock:^(__weak CSHomeViewController *self, NSSet *old, NSSet *new) {
54+
NSMutableArray *addedFeeds = [[new allObjects] mutableCopy];
55+
NSMutableArray *removedFeeds = [[old allObjects] mutableCopy];
56+
57+
[addedFeeds removeObjectsInArray:[old allObjects]];
58+
[removedFeeds removeObjectsInArray:[new allObjects]];
59+
60+
for ( Feed *feed in removedFeeds ){
61+
[feed removeAllObservations];
62+
}
63+
64+
for ( Feed *feed in addedFeeds ){
65+
[feed observeRelationship:@"feedItems"
66+
changeBlock:^(__weak Feed *feed, NSSet *old, NSSet *new) {
67+
68+
_feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems];
69+
70+
if(!new) {
71+
NSLog(@"startup?");
72+
} else {
73+
NSMutableArray *addedFeedItems = [[new allObjects] mutableCopy];
74+
NSMutableArray *removedFeedItems = [[old allObjects] mutableCopy];
6675

67-
_feedItems = [(CSFeedItemCollectionViewDataSource *)_collectionView_feedItems.dataSource feedItems];
76+
[addedFeedItems removeObjectsInArray:[old allObjects]];
77+
[removedFeedItems removeObjectsInArray:[new allObjects]];
6878

69-
if(!new) {
70-
NSLog(@"startup?");
71-
} else {
72-
NSMutableArray *addedFeedItems = [[new allObjects] mutableCopy];
73-
NSMutableArray *removedFeedItems = [[old allObjects] mutableCopy];
74-
75-
[addedFeedItems removeObjectsInArray:[old allObjects]];
76-
[removedFeedItems removeObjectsInArray:[new allObjects]];
77-
78-
for( FeedItem *item in removedFeedItems ){
79-
[_feedItems removeObject:item];
80-
}
81-
82-
for( FeedItem *item in addedFeedItems ){
83-
[_feedItems addObject:item];
84-
}
79+
for( FeedItem *item in removedFeedItems ){
80+
[_feedItems removeObject:item];
8581
}
8682

87-
//redraw the collection with the changes to the feed items
88-
[feedCollectionViewDataSource sortFeedItems];
89-
[_collectionView_feedItems reloadData];
90-
_pageControl_itemIndicator.numberOfPages = [_feedItems count] < 6 ? [_feedItems count] : 5;
91-
92-
if(currentFeedItem){
93-
[self scrollToCurrentFeedItem];
94-
[self setPageControllerPageAtIndex:[feedCollectionViewDataSource.sortedFeedItems indexOfObject:currentFeedItem]];
83+
for( FeedItem *item in addedFeedItems ){
84+
[_feedItems addObject:item];
9585
}
86+
87+
//Add call to button on custom page controller
88+
}
89+
90+
//redraw the collection with the changes to the feed items
91+
[feedCollectionViewDataSource sortFeedItems];
92+
[_collectionView_feedItems reloadData];
93+
_pageControl_itemIndicator.numberOfPages = [_feedItems count] < 6 ? [_feedItems count] : 5;
94+
95+
if(currentFeedItem){
96+
[self scrollToCurrentFeedItem];
97+
[self setPageControllerPageAtIndex:[feedCollectionViewDataSource.sortedFeedItems indexOfObject:currentFeedItem]];
9698
}
97-
insertionBlock:nil
98-
removalBlock:nil
99-
replacementBlock:nil];
100-
}
101-
}
102-
insertionBlock:nil
103-
removalBlock:nil
104-
replacementBlock:nil
105-
];
99+
}
100+
insertionBlock:nil
101+
removalBlock:nil
102+
replacementBlock:nil];
103+
}
104+
}
105+
insertionBlock:nil
106+
removalBlock:nil
107+
replacementBlock:nil
108+
];
106109
}
107110

108111
// Sets up collection view on controller start up
@@ -121,8 +124,50 @@ - (void)setUpCollectionView
121124

122125
self.collectionView_feedItems.pagingEnabled = YES;
123126
self.pageControl_itemIndicator.currentPage = 0;
127+
128+
UIButton *dot = [UIButton buttonWithType:UIButtonTypeInfoLight];
129+
dot.frame = CGRectMake(10,(self.pageControl_itemIndicator.frame.size.height/2)-5, 12, 12);
130+
131+
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(newItemButton:)];
132+
[dot addGestureRecognizer:singleTap];
133+
134+
UIView *leftFade = [[UIView alloc] init];
135+
leftFade.frame = CGRectMake(90, 10, 70, 20);
136+
leftFade.backgroundColor = [UIColor blackColor];
137+
138+
CAGradientLayer *leftLayer = [CAGradientLayer layer];
139+
leftLayer.frame = leftFade.bounds;
140+
leftLayer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
141+
leftLayer.startPoint = CGPointMake(0.0f, 1.0f);
142+
leftLayer.endPoint = CGPointMake(1.0f, 1.0f);
143+
leftFade.layer.mask = leftLayer;
144+
145+
UIView *rightFade = [[UIView alloc] init];
146+
rightFade.frame = CGRectMake(160, 10, 70, 20);
147+
rightFade.backgroundColor = [UIColor blackColor];
148+
149+
CAGradientLayer *rightLayer = [CAGradientLayer layer];
150+
rightLayer.frame = rightFade.bounds;
151+
rightLayer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
152+
rightLayer.startPoint = CGPointMake(1.0f, 1.0f);
153+
rightLayer.endPoint = CGPointMake(0.0f, 1.0f);
154+
rightFade.layer.mask = rightLayer;
155+
156+
157+
[self.pageControl_itemIndicator addSubview:dot];
158+
UIView *pageControllerMask = [self.pageControl_itemIndicator superview];
159+
[pageControllerMask addSubview:leftFade];
160+
[pageControllerMask addSubview:rightFade];
124161
}
125162

163+
-(void)newItemButton:(id)sender
164+
{
165+
currentFeedItem = [feedCollectionViewDataSource.sortedFeedItems firstObject];
166+
[self scrollToCurrentFeedItem];
167+
self.collectionCellGoingTo = 0;
168+
[self setPageControllerPageAtIndex:[feedCollectionViewDataSource.sortedFeedItems indexOfObject:currentFeedItem]];
169+
[sender setHidden:YES];
170+
}
126171

127172
#pragma mark - IBActions
128173

EasyReader/Application/Views/Main_iPhone.storyboard

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
1818
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
1919
<subviews>
20-
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" bounces="NO" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EWA-9Z-pb1">
20+
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" bounces="NO" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EWA-9Z-pb1">
2121
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
2222
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
2323
<subviews>
@@ -132,19 +132,21 @@
132132
<action selector="buttonLeftMenu_touchUpInside_goToMenu:" destination="Hgn-0q-Z1W" eventType="touchUpInside" id="hMD-Og-FDZ"/>
133133
</connections>
134134
</button>
135-
<pageControl opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="5" translatesAutoresizingMaskIntoConstraints="NO" id="vdW-Yb-aAb">
136-
<rect key="frame" x="0.0" y="531" width="320" height="37"/>
135+
<view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KCf-YN-pPo">
136+
<rect key="frame" x="0.0" y="531" width="320" height="284"/>
137137
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
138-
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
139-
<constraints>
140-
<constraint firstAttribute="height" constant="37" id="mCV-Zv-Iwk"/>
141-
</constraints>
142-
</pageControl>
138+
<subviews>
139+
<pageControl opaque="NO" contentMode="scaleToFill" ambiguous="YES" misplaced="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="5" translatesAutoresizingMaskIntoConstraints="NO" id="vdW-Yb-aAb">
140+
<rect key="frame" x="0.0" y="0.0" width="320" height="37"/>
141+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
142+
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
143+
<constraints>
144+
<constraint firstAttribute="height" constant="37" id="mCV-Zv-Iwk"/>
145+
</constraints>
146+
</pageControl>
147+
</subviews>
148+
</view>
143149
</subviews>
144-
<constraints>
145-
<constraint firstAttribute="trailing" secondItem="vdW-Yb-aAb" secondAttribute="trailing" id="Bcm-5I-kx3"/>
146-
<constraint firstItem="vdW-Yb-aAb" firstAttribute="leading" secondItem="EWA-9Z-pb1" secondAttribute="leading" id="ct5-rK-kEl"/>
147-
</constraints>
148150
</scrollView>
149151
</subviews>
150152
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>

0 commit comments

Comments
 (0)