Skip to content

Commit 2eaa186

Browse files
author
taglia
committed
Added the ability to change 'transformType' from option.
1 parent 83e334a commit 2eaa186

File tree

10 files changed

+171
-296
lines changed

10 files changed

+171
-296
lines changed

ElasticTransistionExample/Cell/CellDimensionAndTypeDelegate.h

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
typedef NS_ENUM(int, PropertyRelated){
1212
STICKY,
1313
SHADOW,
14+
TRANSFORM,
1415
RADIUS
1516
};
1617

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// SegmentCellModel.h
3+
// ElasticTransitionExample
4+
//
5+
// Created by Tigielle on 16/02/16.
6+
// Copyright © 2016 Matteo Tagliafico. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
#import "CellDimensionAndTypeDelegate.h"
11+
12+
@protocol CellSegmentChange;
13+
14+
@interface SegmentCellModel : NSObject <CellDimensionAndTypeDelegate>
15+
16+
@property (nonatomic) NSArray *values;
17+
@property (nonatomic) NSInteger index;
18+
@property (nonatomic, weak) id<CellSegmentChange> delegate;
19+
20+
- (void)setSelcetedTransformIndex:(NSInteger)index;
21+
22+
@end
23+
24+
25+
@protocol CellSegmentChange <NSObject>
26+
27+
@optional
28+
29+
-(void)didSelcetedTransformIndex:(NSInteger)index AndPropertyRelated:(PropertyRelated)property;
30+
31+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// SegmentCellModel.m
3+
// ElasticTransitionExample
4+
//
5+
// Created by Tigielle on 16/02/16.
6+
// Copyright © 2016 Matteo Tagliafico. All rights reserved.
7+
//
8+
9+
#import "SegmentCellModel.h"
10+
11+
@implementation SegmentCellModel
12+
13+
@synthesize type, rowHeigth;
14+
@synthesize name;
15+
16+
17+
- (void)setSelcetedTransformIndex:(NSInteger)index{
18+
19+
self.index = index;
20+
21+
id<CellSegmentChange> strongDelegate = self.delegate;
22+
23+
if([strongDelegate respondsToSelector:@selector(didSelcetedTransformIndex:AndPropertyRelated:)]){
24+
25+
[strongDelegate didSelcetedTransformIndex:index AndPropertyRelated:TRANSFORM];
26+
}
27+
}
28+
29+
@end

ElasticTransistionExample/Cell/CellModel/SwitchCellModel.m

-13
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,6 @@ @implementation SwitchCellModel
1313
@synthesize type, rowHeigth;
1414
@synthesize name;
1515

16-
-(id)initWithName:(NSString*)aName AndOn:(BOOL)on{
17-
18-
self = [super init];
19-
20-
if(self){
21-
22-
self.rowHeigth = 54.0;
23-
self.name = aName;
24-
self.on = on;
25-
}
26-
27-
return self;
28-
}
2916

3017
- (void)setSwitchOn:(BOOL)on{
3118

ElasticTransistionExample/Cell/SegmentCell.h

+6-5
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
//
88

99
#import <UIKit/UIKit.h>
10-
#import "CellDimensionAndTypeDelegate.h"
10+
#import "SegmentCellModel.h"
1111

12-
@interface SegmentCell : UITableViewCell <CellDimensionAndTypeDelegate>
12+
@interface SegmentCell : UITableViewCell
1313

1414
@property (nonatomic) NSMutableArray *values;
1515

16-
@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
17-
@property (nonatomic, weak) IBOutlet UISegmentedControl *segment;
16+
@property (nonatomic, weak) IBOutlet UILabel *nameLabel;
17+
@property (nonatomic) IBOutlet UISegmentedControl *segment;
18+
@property (nonatomic, weak) SegmentCellModel *cellModel;
1819

1920
-(IBAction)segmentChanged:(UISegmentedControl*)sender;
2021

21-
@end
22+
@end

ElasticTransistionExample/Cell/SegmentCell.m

+20-12
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,35 @@
1010

1111
@implementation SegmentCell
1212

13-
@synthesize type, rowHeigth;
13+
@synthesize cellModel, segment;
1414

15-
- (id)initWithCoder:(NSCoder *)aDecoder
16-
{
17-
self = [super initWithCoder:aDecoder];
15+
- (void)setCellModel:(SegmentCellModel *)aCellModel{
1816

19-
if (self) {
20-
21-
self.rowHeigth = 72.0;
22-
}
17+
self->cellModel = aCellModel;
18+
19+
[self setSegments: aCellModel.values];
2320

24-
return self;
21+
self.nameLabel.text = aCellModel.name;
2522
}
2623

27-
-(void)onChangeValue:(id)value{
24+
25+
-(IBAction)segmentChanged:(UISegmentedControl*)sender{
2826

27+
[self.cellModel setSelcetedTransformIndex:sender.selectedSegmentIndex];
2928
}
3029

31-
-(IBAction)segmentChanged:(UISegmentedControl*)sender{
30+
- (void)setSegments:(NSArray *)segments
31+
{
32+
[self.segment removeAllSegments];
33+
34+
int i = 0;
35+
36+
for (NSString *str in segments) {
37+
[self.segment insertSegmentWithTitle:str atIndex:i animated:NO];
38+
i++;
39+
}
3240

33-
[self onChangeValue:self.values[sender.selectedSegmentIndex]];
41+
[self.segment setSelectedSegmentIndex:self.cellModel.index];
3442
}
3543

3644
@end

ElasticTransistionExample/OptionsViewController.m

+66-14
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99
#import "OptionsViewController.h"
1010

1111
#import "SwitchCellModel.h"
12+
#import "SegmentCellModel.h"
1213

1314
#import "SwitchCell.h"
1415
#import "SliderCell.h"
1516
#import "SegmentCell.h"
1617

17-
@interface OptionsViewController ()<CellStateChange>{
18+
#define kHeightSwitchCell 54
19+
#define kHeightSegmentCell 72
20+
21+
@interface OptionsViewController ()<CellStateChange, CellSegmentChange>{
1822

1923
ElasticTransition *tm;
2024
NSMutableArray *menuItems;
@@ -51,29 +55,55 @@ - (void)viewDidLoad {
5155

5256

5357
NSMutableArray *va = [[NSMutableArray alloc] init];
54-
[va addObject:[NSNumber numberWithInt:NONE]];
55-
[va addObject:[NSNumber numberWithInt:ROTATE]];
56-
[va addObject:[NSNumber numberWithInt:TRANSLATEMID]];
58+
[va addObject:@"NONE"];
59+
[va addObject:@"ROTATE"];
60+
[va addObject:@"TRANSLATE MID"];
5761

5862

5963
menuItems = [[NSMutableArray alloc] init];
6064

6165
SwitchCellModel *stickySwitchModel = [[SwitchCellModel alloc]init];
6266
stickySwitchModel.name = @"Sticky";
63-
stickySwitchModel.on = tm.sticky;
64-
stickySwitchModel.rowHeigth = 54.0;
6567
stickySwitchModel.type = STICKY;
68+
stickySwitchModel.on = tm.sticky;
69+
stickySwitchModel.rowHeigth = kHeightSwitchCell;
6670
stickySwitchModel.delegate = self;
6771
[menuItems addObject:stickySwitchModel];
6872

6973
SwitchCellModel *shadowSwitchModel = [[SwitchCellModel alloc]init];
7074
shadowSwitchModel.name = @"Shadow";
71-
shadowSwitchModel.on = tm.showShadow;
72-
shadowSwitchModel.rowHeigth = 54.0;
7375
shadowSwitchModel.type = SHADOW;
76+
shadowSwitchModel.on = tm.showShadow;
77+
shadowSwitchModel.rowHeigth = kHeightSwitchCell;
7478
shadowSwitchModel.delegate = self;
7579
[menuItems addObject:shadowSwitchModel];
7680

81+
SegmentCellModel *transformSegmentModel = [[SegmentCellModel alloc]init];
82+
transformSegmentModel.name = @"Transform Type";
83+
transformSegmentModel.type = TRANSFORM;
84+
transformSegmentModel. values = [va copy];
85+
86+
switch (tm.transformType) {
87+
case NONE:
88+
transformSegmentModel.index = 0;
89+
break;
90+
case ROTATE:
91+
transformSegmentModel.index = 1;
92+
break;
93+
case TRANSLATEMID:
94+
case TRANSLATEPULL:
95+
case TRANSLATEPUSH:
96+
transformSegmentModel.index = 2;
97+
break;
98+
99+
default:
100+
break;
101+
}
102+
103+
transformSegmentModel.rowHeigth = kHeightSegmentCell;
104+
transformSegmentModel.delegate = self;
105+
[menuItems addObject:transformSegmentModel];
106+
77107

78108
for (int i = 0 ; i < menuItems.count; i++) {
79109

@@ -100,7 +130,6 @@ -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSI
100130
case 1:
101131
{
102132
SwitchCellModel *itemModel = (SwitchCellModel *) [menuItems objectAtIndex:indexPath.row];
103-
104133

105134
SwitchCell *switchCell = [tableView dequeueReusableCellWithIdentifier:@"switch" forIndexPath:indexPath];
106135
switchCell.cellModel = itemModel;
@@ -110,15 +139,17 @@ -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSI
110139
}
111140
case 2:
112141
{
142+
SegmentCellModel *itemModel = (SegmentCellModel *) [menuItems objectAtIndex:indexPath.row];
113143

144+
SegmentCell *segmentCell = [tableView dequeueReusableCellWithIdentifier:@"segment" forIndexPath:indexPath];
145+
segmentCell.cellModel = itemModel;
146+
cell = segmentCell;
114147
}
115148
default:
116149
break;
117150
}
118151

119-
120152
return cell;
121-
122153
}
123154

124155

@@ -129,20 +160,21 @@ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)
129160

130161
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
131162

132-
133163
NSObject *itemModel = [menuItems objectAtIndex:indexPath.row];
134164

135165
if ([[itemModel class] conformsToProtocol:@protocol(CellDimensionAndTypeDelegate)]) {
136-
NSObject <CellDimensionAndTypeDelegate> *item = (NSObject <CellDimensionAndTypeDelegate> *) itemModel;
166+
NSObject <CellDimensionAndTypeDelegate> *itemProt = (NSObject <CellDimensionAndTypeDelegate> *) itemModel;
137167

138-
return item.rowHeigth;
168+
return itemProt.rowHeigth;
139169

140170
}else{
141171
return 0.0;
142172
}
143173
}
144174

145175

176+
#pragma mark - Listen to table changes
177+
146178
-(void)didChangeStateToOn:(BOOL)on AndPropertyRelated:(PropertyRelated)property{
147179

148180
switch (property) {
@@ -157,6 +189,26 @@ -(void)didChangeStateToOn:(BOOL)on AndPropertyRelated:(PropertyRelated)property{
157189
}
158190
}
159191

192+
-(void)didSelcetedTransformIndex:(NSInteger)index AndPropertyRelated:(PropertyRelated)property{
193+
194+
if (property == TRANSFORM) {
195+
196+
switch (index) {
197+
case 0:
198+
tm.transformType = NONE;
199+
break;
200+
case 1:
201+
tm.transformType = ROTATE;
202+
break;
203+
case 2:
204+
tm.transformType = TRANSLATEMID;
205+
break;
206+
default:
207+
break;
208+
}
209+
}
210+
}
211+
160212
-(UIStatusBarStyle)preferredStatusBarStyle{
161213
return UIStatusBarStyleLightContent;
162214
}

ElasticTransitionExample.xcodeproj/project.pbxproj

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
/* Begin PBXBuildFile section */
1010
BA70DEB91C6F7F10008B5DB4 /* HelperFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = BA70DEB81C6F7F10008B5DB4 /* HelperFunctions.m */; };
11+
BABE5AB81C73DA69004AF533 /* SegmentCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BABE5AB71C73DA69004AF533 /* SegmentCellModel.m */; };
1112
BAC47DF81C6C09D200F8E005 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BAC47DF71C6C09D200F8E005 /* main.m */; };
1213
BAC47DFB1C6C09D200F8E005 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BAC47DFA1C6C09D200F8E005 /* AppDelegate.m */; };
1314
BAC47E011C6C09D200F8E005 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BAC47DFF1C6C09D200F8E005 /* Main.storyboard */; };
@@ -32,6 +33,8 @@
3233
/* Begin PBXFileReference section */
3334
BA70DEB71C6F7F10008B5DB4 /* HelperFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HelperFunctions.h; path = ElasticTransition/Utils/HelperFunctions.h; sourceTree = SOURCE_ROOT; };
3435
BA70DEB81C6F7F10008B5DB4 /* HelperFunctions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HelperFunctions.m; path = ElasticTransition/Utils/HelperFunctions.m; sourceTree = SOURCE_ROOT; };
36+
BABE5AB61C73DA69004AF533 /* SegmentCellModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SegmentCellModel.h; path = Cell/CellModel/SegmentCellModel.h; sourceTree = "<group>"; };
37+
BABE5AB71C73DA69004AF533 /* SegmentCellModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SegmentCellModel.m; path = Cell/CellModel/SegmentCellModel.m; sourceTree = "<group>"; };
3538
BAC47DF31C6C09D200F8E005 /* ElasticTransitionExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ElasticTransitionExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
3639
BAC47DF71C6C09D200F8E005 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
3740
BAC47DF91C6C09D200F8E005 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
@@ -170,10 +173,10 @@
170173
BAFB89701C7334F700FDA257 /* Cell Model */,
171174
BAFB89661C732F5400FDA257 /* SwitchCell.h */,
172175
BAFB89671C732F5400FDA257 /* SwitchCell.m */,
173-
BAFB89691C732F6900FDA257 /* SliderCell.h */,
174-
BAFB896A1C732F6900FDA257 /* SliderCell.m */,
175176
BAFB896C1C732F7C00FDA257 /* SegmentCell.h */,
176177
BAFB896D1C732F7C00FDA257 /* SegmentCell.m */,
178+
BAFB89691C732F6900FDA257 /* SliderCell.h */,
179+
BAFB896A1C732F6900FDA257 /* SliderCell.m */,
177180
BAFB896F1C732FC900FDA257 /* CellDimensionAndTypeDelegate.h */,
178181
);
179182
name = Cell;
@@ -184,6 +187,8 @@
184187
children = (
185188
BAFB89711C73352500FDA257 /* SwitchCellModel.h */,
186189
BAFB89721C73352500FDA257 /* SwitchCellModel.m */,
190+
BABE5AB61C73DA69004AF533 /* SegmentCellModel.h */,
191+
BABE5AB71C73DA69004AF533 /* SegmentCellModel.m */,
187192
);
188193
name = "Cell Model";
189194
sourceTree = "<group>";
@@ -265,6 +270,7 @@
265270
BAFB896B1C732F6900FDA257 /* SliderCell.m in Sources */,
266271
BAC47E351C6C97CD00F8E005 /* MenuViewController.m in Sources */,
267272
BAC47E381C6C97F900F8E005 /* NavigationExampleViewController.m in Sources */,
273+
BABE5AB81C73DA69004AF533 /* SegmentCellModel.m in Sources */,
268274
BAFB89731C73352500FDA257 /* SwitchCellModel.m in Sources */,
269275
BAC47E441C6C999900F8E005 /* ElasticTransition.m in Sources */,
270276
BA70DEB91C6F7F10008B5DB4 /* HelperFunctions.m in Sources */,

0 commit comments

Comments
 (0)