├── README.md
├── UITableViewCellHeightDemo
├── image.jpg
├── ListModel.m
├── BaseViewController.h
├── ListViewController.h
├── ListModel.h
├── PrefixHeader.pch
├── AppDelegate.h
├── ListTableViewCell.h
├── main.m
├── AppDelegate.m
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── ListTableViewCell.m
├── Info.plist
├── BaseViewController.m
├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
├── ListViewController.m
└── ListTableViewCell.xib
├── UITableViewCellHeightDemo.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── project.pbxproj
├── LICENSE
└── .gitignore
/README.md:
--------------------------------------------------------------------------------
1 | # UITableViewCellHeightDemo
2 | UITableView自动计算高度并缓存
3 |
4 | 讲解详见[这篇文章](http://www.jianshu.com/p/64f0e1557562)
5 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lisongrc/UITableViewCellHeightDemo/HEAD/UITableViewCellHeightDemo/image.jpg
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListModel.m:
--------------------------------------------------------------------------------
1 | //
2 | // ListModel.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "ListModel.h"
10 |
11 | @implementation ListModel
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/BaseViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BaseViewController.h
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BaseViewController : UIViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ListViewController.h
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "BaseViewController.h"
10 |
11 | @interface ListViewController : BaseViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListModel.h:
--------------------------------------------------------------------------------
1 | //
2 | // ListModel.h
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ListModel : NSObject
12 |
13 | @property (nonatomic, copy) NSString *desc;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/PrefixHeader.pch:
--------------------------------------------------------------------------------
1 | //
2 | // PrefixHeader.pch
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #ifndef PrefixHeader_pch
10 | #define PrefixHeader_pch
11 |
12 | #import "BaseViewController.h"
13 |
14 | #endif /* PrefixHeader_pch */
15 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 |
16 | @end
17 |
18 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListTableViewCell.h:
--------------------------------------------------------------------------------
1 | //
2 | // ListTableViewCell.h
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "ListModel.h"
11 |
12 | @interface ListTableViewCell : UITableViewCell
13 |
14 | @property (nonatomic, strong) ListModel *model;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "AppDelegate.h"
11 |
12 | int main(int argc, char * argv[]) {
13 | @autoreleasepool {
14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 |
11 | @interface AppDelegate ()
12 |
13 | @end
14 |
15 | @implementation AppDelegate
16 |
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
19 | {
20 | return YES;
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "29x29",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "40x40",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "40x40",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "60x60",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "60x60",
31 | "scale" : "3x"
32 | }
33 | ],
34 | "info" : {
35 | "version" : 1,
36 | "author" : "xcode"
37 | }
38 | }
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListTableViewCell.m:
--------------------------------------------------------------------------------
1 | //
2 | // ListTableViewCell.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "ListTableViewCell.h"
10 |
11 | @interface ListTableViewCell ()
12 |
13 | @property (weak, nonatomic) IBOutlet UIImageView *iconImageView;
14 | @property (weak, nonatomic) IBOutlet UILabel *desclabel;
15 |
16 | @end
17 |
18 | @implementation ListTableViewCell
19 |
20 | - (void)awakeFromNib
21 | {
22 | [super awakeFromNib];
23 | }
24 |
25 | - (void)setModel:(ListModel *)model
26 | {
27 | _model = model;
28 |
29 | self.iconImageView.image = [UIImage imageNamed:@"image.jpg"];
30 | self.desclabel.text = model.desc;
31 | }
32 |
33 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated
34 | {
35 | [super setSelected:selected animated:animated];
36 | }
37 |
38 | @end
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 lisong
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
4 |
5 | ## Build generated
6 | build/
7 | DerivedData/
8 |
9 | ## Various settings
10 | *.pbxuser
11 | !default.pbxuser
12 | *.mode1v3
13 | !default.mode1v3
14 | *.mode2v3
15 | !default.mode2v3
16 | *.perspectivev3
17 | !default.perspectivev3
18 | xcuserdata/
19 |
20 | ## Other
21 | *.moved-aside
22 | *.xcuserstate
23 |
24 | ## Obj-C/Swift specific
25 | *.hmap
26 | *.ipa
27 | *.dSYM.zip
28 | *.dSYM
29 |
30 | # CocoaPods
31 | #
32 | # We recommend against adding the Pods directory to your .gitignore. However
33 | # you should judge for yourself, the pros and cons are mentioned at:
34 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
35 | #
36 | # Pods/
37 |
38 | # Carthage
39 | #
40 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
41 | # Carthage/Checkouts
42 |
43 | Carthage/Build
44 |
45 | # fastlane
46 | #
47 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
48 | # screenshots whenever they are needed.
49 | # For more information about the recommended setup visit:
50 | # https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md
51 |
52 | fastlane/report.xml
53 | fastlane/screenshots
54 |
55 | #Code Injection
56 | #
57 | # After new code Injection tools there's a generated folder /iOSInjectionProject
58 | # https://github.com/johnno1962/injectionforxcode
59 |
60 | iOSInjectionProject/
61 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/BaseViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // BaseViewController.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "BaseViewController.h"
10 |
11 | @interface BaseViewController ()
12 |
13 | @property (nonatomic, strong) NSMutableDictionary *heightAtIndexPath;//缓存高度
14 |
15 | @end
16 |
17 | @implementation BaseViewController
18 |
19 | - (void)viewDidLoad
20 | {
21 | [super viewDidLoad];
22 | }
23 |
24 | #pragma mark - UITableViewDelegate
25 | - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
26 | {
27 | NSNumber *height = [self.heightAtIndexPath objectForKey:indexPath];
28 | if(height)
29 | {
30 | return height.floatValue;
31 | }
32 | else
33 | {
34 | return 100;
35 | }
36 | }
37 |
38 | - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
39 | {
40 | return UITableViewAutomaticDimension;
41 | }
42 |
43 | - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
44 | {
45 | NSNumber *height = @(cell.frame.size.height);
46 | [self.heightAtIndexPath setObject:height forKey:indexPath];
47 | }
48 |
49 | #pragma mark - Getters
50 | - (NSMutableDictionary *)heightAtIndexPath
51 | {
52 | if (!_heightAtIndexPath) {
53 | _heightAtIndexPath = [NSMutableDictionary dictionary];
54 | }
55 | return _heightAtIndexPath;
56 | }
57 |
58 | - (void)didReceiveMemoryWarning
59 | {
60 | [super didReceiveMemoryWarning];
61 | }
62 |
63 | @end
64 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ListViewController.m
3 | // UITableViewCellHeightDemo
4 | //
5 | // Created by lisong on 2016/10/8.
6 | // Copyright © 2016年 lisong. All rights reserved.
7 | //
8 |
9 | #import "ListViewController.h"
10 | #import "ListTableViewCell.h"
11 |
12 | static NSString * const ReuseIdentifier = @"cell";
13 |
14 | @interface ListViewController ()
15 |
16 | @property (weak, nonatomic) IBOutlet UITableView *tableView;
17 |
18 | @property (nonatomic, strong) NSMutableArray *dataArray;
19 |
20 | @end
21 |
22 | @implementation ListViewController
23 |
24 | - (void)viewDidLoad
25 | {
26 | [super viewDidLoad];
27 |
28 | self.navigationItem.title = @"标题";
29 |
30 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"reloaData" style:UIBarButtonItemStylePlain target:self action:@selector(rightBarButtonItemDidClick:)];
31 |
32 | [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([ListTableViewCell class]) bundle:nil] forCellReuseIdentifier:ReuseIdentifier];
33 | }
34 |
35 | #pragma mark - UITableViewDelegate
36 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
37 | {
38 | return self.dataArray.count;
39 | }
40 |
41 | - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
42 | {
43 | ListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ReuseIdentifier forIndexPath:indexPath];
44 | cell.model = self.dataArray[indexPath.row];
45 | return cell;
46 | }
47 |
48 | #pragma mark - Methods
49 | - (void)rightBarButtonItemDidClick:(UIBarButtonItem *)item
50 | {
51 | [self.tableView reloadData];
52 | }
53 |
54 | #pragma mark - Getters
55 | - (NSMutableArray *)dataArray
56 | {
57 | if (!_dataArray)
58 | {
59 | _dataArray = [NSMutableArray array];
60 |
61 | NSString *string = @"Siri 让你能够利用语音来完成发送信息、安排会议、查看最新比分等更多事务。只要说出你想做的事,Siri 就能帮你办到。Siri 可以听懂你说的话、知晓你的心意,甚至还能有所回应。iOS 7 中的 Siri 拥有新外观、新声音和新功能。它的界面经过重新设计,以淡入视图浮现于任意屏幕画面的最上层。Siri 回答问题的速度更快,还能查询更多信息源,如维基百科。它可以承担更多任务,如回电话、播放语音邮件、调节屏幕亮度,以及更多。";
62 |
63 | //生成假数据
64 | for (int i = 0; i < 100; i++)
65 | {
66 | ListModel *model = [[ListModel alloc] init];
67 | NSInteger index = (arc4random()%(string.length / 20)) * 20;
68 | model.desc = [string substringToIndex:MAX(20, index)];
69 |
70 | [_dataArray addObject:model];
71 | }
72 | }
73 | return _dataArray;
74 | }
75 |
76 | - (void)didReceiveMemoryWarning
77 | {
78 | [super didReceiveMemoryWarning];
79 | }
80 |
81 | @end
82 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/ListTableViewCell.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/UITableViewCellHeightDemo.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 99F12AEA1DA8E55D00E3A1AC /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12AE91DA8E55D00E3A1AC /* main.m */; };
11 | 99F12AED1DA8E55D00E3A1AC /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12AEC1DA8E55D00E3A1AC /* AppDelegate.m */; };
12 | 99F12AF31DA8E55D00E3A1AC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 99F12AF11DA8E55D00E3A1AC /* Main.storyboard */; };
13 | 99F12AF51DA8E55D00E3A1AC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 99F12AF41DA8E55D00E3A1AC /* Assets.xcassets */; };
14 | 99F12AF81DA8E55D00E3A1AC /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 99F12AF61DA8E55D00E3A1AC /* LaunchScreen.storyboard */; };
15 | 99F12B011DA8E60400E3A1AC /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12B001DA8E60400E3A1AC /* BaseViewController.m */; };
16 | 99F12B061DA8EA1B00E3A1AC /* ListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12B041DA8EA1B00E3A1AC /* ListTableViewCell.m */; };
17 | 99F12B071DA8EA1B00E3A1AC /* ListTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 99F12B051DA8EA1B00E3A1AC /* ListTableViewCell.xib */; };
18 | 99F12B0A1DA8EA4000E3A1AC /* ListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12B091DA8EA4000E3A1AC /* ListViewController.m */; };
19 | 99F12B0F1DA8EB0E00E3A1AC /* ListModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 99F12B0E1DA8EB0E00E3A1AC /* ListModel.m */; };
20 | 99F12B111DA8EE2800E3A1AC /* image.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 99F12B101DA8EE2800E3A1AC /* image.jpg */; };
21 | /* End PBXBuildFile section */
22 |
23 | /* Begin PBXFileReference section */
24 | 99F12AE51DA8E55D00E3A1AC /* UITableViewCellHeightDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UITableViewCellHeightDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
25 | 99F12AE91DA8E55D00E3A1AC /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
26 | 99F12AEB1DA8E55D00E3A1AC /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
27 | 99F12AEC1DA8E55D00E3A1AC /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
28 | 99F12AF21DA8E55D00E3A1AC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
29 | 99F12AF41DA8E55D00E3A1AC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
30 | 99F12AF71DA8E55D00E3A1AC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
31 | 99F12AFF1DA8E60400E3A1AC /* BaseViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = ""; };
32 | 99F12B001DA8E60400E3A1AC /* BaseViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = ""; };
33 | 99F12B021DA8E66100E3A1AC /* PrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PrefixHeader.pch; sourceTree = ""; };
34 | 99F12B031DA8EA1B00E3A1AC /* ListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListTableViewCell.h; sourceTree = ""; };
35 | 99F12B041DA8EA1B00E3A1AC /* ListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ListTableViewCell.m; sourceTree = ""; };
36 | 99F12B051DA8EA1B00E3A1AC /* ListTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ListTableViewCell.xib; sourceTree = ""; };
37 | 99F12B081DA8EA4000E3A1AC /* ListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListViewController.h; sourceTree = ""; };
38 | 99F12B091DA8EA4000E3A1AC /* ListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ListViewController.m; sourceTree = ""; };
39 | 99F12B0D1DA8EB0E00E3A1AC /* ListModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ListModel.h; sourceTree = ""; };
40 | 99F12B0E1DA8EB0E00E3A1AC /* ListModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ListModel.m; sourceTree = ""; };
41 | 99F12B101DA8EE2800E3A1AC /* image.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = image.jpg; sourceTree = ""; };
42 | /* End PBXFileReference section */
43 |
44 | /* Begin PBXFrameworksBuildPhase section */
45 | 99F12AE21DA8E55D00E3A1AC /* Frameworks */ = {
46 | isa = PBXFrameworksBuildPhase;
47 | buildActionMask = 2147483647;
48 | files = (
49 | );
50 | runOnlyForDeploymentPostprocessing = 0;
51 | };
52 | /* End PBXFrameworksBuildPhase section */
53 |
54 | /* Begin PBXGroup section */
55 | 99F12ADC1DA8E55D00E3A1AC = {
56 | isa = PBXGroup;
57 | children = (
58 | 99F12AE71DA8E55D00E3A1AC /* UITableViewCellHeightDemo */,
59 | 99F12AE61DA8E55D00E3A1AC /* Products */,
60 | );
61 | sourceTree = "";
62 | };
63 | 99F12AE61DA8E55D00E3A1AC /* Products */ = {
64 | isa = PBXGroup;
65 | children = (
66 | 99F12AE51DA8E55D00E3A1AC /* UITableViewCellHeightDemo.app */,
67 | );
68 | name = Products;
69 | sourceTree = "";
70 | };
71 | 99F12AE71DA8E55D00E3A1AC /* UITableViewCellHeightDemo */ = {
72 | isa = PBXGroup;
73 | children = (
74 | 99F12AEB1DA8E55D00E3A1AC /* AppDelegate.h */,
75 | 99F12AEC1DA8E55D00E3A1AC /* AppDelegate.m */,
76 | 99F12AFF1DA8E60400E3A1AC /* BaseViewController.h */,
77 | 99F12B001DA8E60400E3A1AC /* BaseViewController.m */,
78 | 99F12B081DA8EA4000E3A1AC /* ListViewController.h */,
79 | 99F12B091DA8EA4000E3A1AC /* ListViewController.m */,
80 | 99F12B031DA8EA1B00E3A1AC /* ListTableViewCell.h */,
81 | 99F12B041DA8EA1B00E3A1AC /* ListTableViewCell.m */,
82 | 99F12B051DA8EA1B00E3A1AC /* ListTableViewCell.xib */,
83 | 99F12B0D1DA8EB0E00E3A1AC /* ListModel.h */,
84 | 99F12B0E1DA8EB0E00E3A1AC /* ListModel.m */,
85 | 99F12B101DA8EE2800E3A1AC /* image.jpg */,
86 | 99F12AF11DA8E55D00E3A1AC /* Main.storyboard */,
87 | 99F12AF41DA8E55D00E3A1AC /* Assets.xcassets */,
88 | 99F12B021DA8E66100E3A1AC /* PrefixHeader.pch */,
89 | 99F12AE81DA8E55D00E3A1AC /* Supporting Files */,
90 | );
91 | path = UITableViewCellHeightDemo;
92 | sourceTree = "";
93 | };
94 | 99F12AE81DA8E55D00E3A1AC /* Supporting Files */ = {
95 | isa = PBXGroup;
96 | children = (
97 | 99F12AF61DA8E55D00E3A1AC /* LaunchScreen.storyboard */,
98 | 99F12AE91DA8E55D00E3A1AC /* main.m */,
99 | );
100 | name = "Supporting Files";
101 | sourceTree = "";
102 | };
103 | /* End PBXGroup section */
104 |
105 | /* Begin PBXNativeTarget section */
106 | 99F12AE41DA8E55D00E3A1AC /* UITableViewCellHeightDemo */ = {
107 | isa = PBXNativeTarget;
108 | buildConfigurationList = 99F12AFC1DA8E55D00E3A1AC /* Build configuration list for PBXNativeTarget "UITableViewCellHeightDemo" */;
109 | buildPhases = (
110 | 99F12AE11DA8E55D00E3A1AC /* Sources */,
111 | 99F12AE21DA8E55D00E3A1AC /* Frameworks */,
112 | 99F12AE31DA8E55D00E3A1AC /* Resources */,
113 | );
114 | buildRules = (
115 | );
116 | dependencies = (
117 | );
118 | name = UITableViewCellHeightDemo;
119 | productName = UITableViewCellHeightDemo;
120 | productReference = 99F12AE51DA8E55D00E3A1AC /* UITableViewCellHeightDemo.app */;
121 | productType = "com.apple.product-type.application";
122 | };
123 | /* End PBXNativeTarget section */
124 |
125 | /* Begin PBXProject section */
126 | 99F12ADD1DA8E55D00E3A1AC /* Project object */ = {
127 | isa = PBXProject;
128 | attributes = {
129 | LastUpgradeCheck = 0800;
130 | ORGANIZATIONNAME = lisong;
131 | TargetAttributes = {
132 | 99F12AE41DA8E55D00E3A1AC = {
133 | CreatedOnToolsVersion = 8.0;
134 | ProvisioningStyle = Automatic;
135 | };
136 | };
137 | };
138 | buildConfigurationList = 99F12AE01DA8E55D00E3A1AC /* Build configuration list for PBXProject "UITableViewCellHeightDemo" */;
139 | compatibilityVersion = "Xcode 3.2";
140 | developmentRegion = English;
141 | hasScannedForEncodings = 0;
142 | knownRegions = (
143 | en,
144 | Base,
145 | );
146 | mainGroup = 99F12ADC1DA8E55D00E3A1AC;
147 | productRefGroup = 99F12AE61DA8E55D00E3A1AC /* Products */;
148 | projectDirPath = "";
149 | projectRoot = "";
150 | targets = (
151 | 99F12AE41DA8E55D00E3A1AC /* UITableViewCellHeightDemo */,
152 | );
153 | };
154 | /* End PBXProject section */
155 |
156 | /* Begin PBXResourcesBuildPhase section */
157 | 99F12AE31DA8E55D00E3A1AC /* Resources */ = {
158 | isa = PBXResourcesBuildPhase;
159 | buildActionMask = 2147483647;
160 | files = (
161 | 99F12AF81DA8E55D00E3A1AC /* LaunchScreen.storyboard in Resources */,
162 | 99F12B071DA8EA1B00E3A1AC /* ListTableViewCell.xib in Resources */,
163 | 99F12AF51DA8E55D00E3A1AC /* Assets.xcassets in Resources */,
164 | 99F12AF31DA8E55D00E3A1AC /* Main.storyboard in Resources */,
165 | 99F12B111DA8EE2800E3A1AC /* image.jpg in Resources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXSourcesBuildPhase section */
172 | 99F12AE11DA8E55D00E3A1AC /* Sources */ = {
173 | isa = PBXSourcesBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | 99F12B0A1DA8EA4000E3A1AC /* ListViewController.m in Sources */,
177 | 99F12B011DA8E60400E3A1AC /* BaseViewController.m in Sources */,
178 | 99F12AED1DA8E55D00E3A1AC /* AppDelegate.m in Sources */,
179 | 99F12B0F1DA8EB0E00E3A1AC /* ListModel.m in Sources */,
180 | 99F12AEA1DA8E55D00E3A1AC /* main.m in Sources */,
181 | 99F12B061DA8EA1B00E3A1AC /* ListTableViewCell.m in Sources */,
182 | );
183 | runOnlyForDeploymentPostprocessing = 0;
184 | };
185 | /* End PBXSourcesBuildPhase section */
186 |
187 | /* Begin PBXVariantGroup section */
188 | 99F12AF11DA8E55D00E3A1AC /* Main.storyboard */ = {
189 | isa = PBXVariantGroup;
190 | children = (
191 | 99F12AF21DA8E55D00E3A1AC /* Base */,
192 | );
193 | name = Main.storyboard;
194 | sourceTree = "";
195 | };
196 | 99F12AF61DA8E55D00E3A1AC /* LaunchScreen.storyboard */ = {
197 | isa = PBXVariantGroup;
198 | children = (
199 | 99F12AF71DA8E55D00E3A1AC /* Base */,
200 | );
201 | name = LaunchScreen.storyboard;
202 | sourceTree = "";
203 | };
204 | /* End PBXVariantGroup section */
205 |
206 | /* Begin XCBuildConfiguration section */
207 | 99F12AFA1DA8E55D00E3A1AC /* Debug */ = {
208 | isa = XCBuildConfiguration;
209 | buildSettings = {
210 | ALWAYS_SEARCH_USER_PATHS = NO;
211 | CLANG_ANALYZER_NONNULL = YES;
212 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
213 | CLANG_CXX_LIBRARY = "libc++";
214 | CLANG_ENABLE_MODULES = YES;
215 | CLANG_ENABLE_OBJC_ARC = YES;
216 | CLANG_WARN_BOOL_CONVERSION = YES;
217 | CLANG_WARN_CONSTANT_CONVERSION = YES;
218 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
219 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
220 | CLANG_WARN_EMPTY_BODY = YES;
221 | CLANG_WARN_ENUM_CONVERSION = YES;
222 | CLANG_WARN_INFINITE_RECURSION = YES;
223 | CLANG_WARN_INT_CONVERSION = YES;
224 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
225 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
226 | CLANG_WARN_UNREACHABLE_CODE = YES;
227 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
228 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
229 | COPY_PHASE_STRIP = NO;
230 | DEBUG_INFORMATION_FORMAT = dwarf;
231 | ENABLE_STRICT_OBJC_MSGSEND = YES;
232 | ENABLE_TESTABILITY = YES;
233 | GCC_C_LANGUAGE_STANDARD = gnu99;
234 | GCC_DYNAMIC_NO_PIC = NO;
235 | GCC_NO_COMMON_BLOCKS = YES;
236 | GCC_OPTIMIZATION_LEVEL = 0;
237 | GCC_PREPROCESSOR_DEFINITIONS = (
238 | "DEBUG=1",
239 | "$(inherited)",
240 | );
241 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
242 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
243 | GCC_WARN_UNDECLARED_SELECTOR = YES;
244 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
245 | GCC_WARN_UNUSED_FUNCTION = YES;
246 | GCC_WARN_UNUSED_VARIABLE = YES;
247 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
248 | MTL_ENABLE_DEBUG_INFO = YES;
249 | ONLY_ACTIVE_ARCH = YES;
250 | SDKROOT = iphoneos;
251 | };
252 | name = Debug;
253 | };
254 | 99F12AFB1DA8E55D00E3A1AC /* Release */ = {
255 | isa = XCBuildConfiguration;
256 | buildSettings = {
257 | ALWAYS_SEARCH_USER_PATHS = NO;
258 | CLANG_ANALYZER_NONNULL = YES;
259 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
260 | CLANG_CXX_LIBRARY = "libc++";
261 | CLANG_ENABLE_MODULES = YES;
262 | CLANG_ENABLE_OBJC_ARC = YES;
263 | CLANG_WARN_BOOL_CONVERSION = YES;
264 | CLANG_WARN_CONSTANT_CONVERSION = YES;
265 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
266 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
267 | CLANG_WARN_EMPTY_BODY = YES;
268 | CLANG_WARN_ENUM_CONVERSION = YES;
269 | CLANG_WARN_INFINITE_RECURSION = YES;
270 | CLANG_WARN_INT_CONVERSION = YES;
271 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
272 | CLANG_WARN_SUSPICIOUS_MOVES = YES;
273 | CLANG_WARN_UNREACHABLE_CODE = YES;
274 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
275 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
276 | COPY_PHASE_STRIP = NO;
277 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
278 | ENABLE_NS_ASSERTIONS = NO;
279 | ENABLE_STRICT_OBJC_MSGSEND = YES;
280 | GCC_C_LANGUAGE_STANDARD = gnu99;
281 | GCC_NO_COMMON_BLOCKS = YES;
282 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
283 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
284 | GCC_WARN_UNDECLARED_SELECTOR = YES;
285 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
286 | GCC_WARN_UNUSED_FUNCTION = YES;
287 | GCC_WARN_UNUSED_VARIABLE = YES;
288 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
289 | MTL_ENABLE_DEBUG_INFO = NO;
290 | SDKROOT = iphoneos;
291 | VALIDATE_PRODUCT = YES;
292 | };
293 | name = Release;
294 | };
295 | 99F12AFD1DA8E55D00E3A1AC /* Debug */ = {
296 | isa = XCBuildConfiguration;
297 | buildSettings = {
298 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
299 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
300 | GCC_PREFIX_HEADER = "$(SRCROOT)/UITableViewCellHeightDemo/PrefixHeader.pch";
301 | INFOPLIST_FILE = UITableViewCellHeightDemo/Info.plist;
302 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
303 | PRODUCT_BUNDLE_IDENTIFIER = com.lisong.UITableViewCellHeightDemo;
304 | PRODUCT_NAME = "$(TARGET_NAME)";
305 | };
306 | name = Debug;
307 | };
308 | 99F12AFE1DA8E55D00E3A1AC /* Release */ = {
309 | isa = XCBuildConfiguration;
310 | buildSettings = {
311 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
312 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
313 | GCC_PREFIX_HEADER = "$(SRCROOT)/UITableViewCellHeightDemo/PrefixHeader.pch";
314 | INFOPLIST_FILE = UITableViewCellHeightDemo/Info.plist;
315 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
316 | PRODUCT_BUNDLE_IDENTIFIER = com.lisong.UITableViewCellHeightDemo;
317 | PRODUCT_NAME = "$(TARGET_NAME)";
318 | };
319 | name = Release;
320 | };
321 | /* End XCBuildConfiguration section */
322 |
323 | /* Begin XCConfigurationList section */
324 | 99F12AE01DA8E55D00E3A1AC /* Build configuration list for PBXProject "UITableViewCellHeightDemo" */ = {
325 | isa = XCConfigurationList;
326 | buildConfigurations = (
327 | 99F12AFA1DA8E55D00E3A1AC /* Debug */,
328 | 99F12AFB1DA8E55D00E3A1AC /* Release */,
329 | );
330 | defaultConfigurationIsVisible = 0;
331 | defaultConfigurationName = Release;
332 | };
333 | 99F12AFC1DA8E55D00E3A1AC /* Build configuration list for PBXNativeTarget "UITableViewCellHeightDemo" */ = {
334 | isa = XCConfigurationList;
335 | buildConfigurations = (
336 | 99F12AFD1DA8E55D00E3A1AC /* Debug */,
337 | 99F12AFE1DA8E55D00E3A1AC /* Release */,
338 | );
339 | defaultConfigurationIsVisible = 0;
340 | };
341 | /* End XCConfigurationList section */
342 | };
343 | rootObject = 99F12ADD1DA8E55D00E3A1AC /* Project object */;
344 | }
345 |
--------------------------------------------------------------------------------