forked from bonzoq/hniosreader
-
Notifications
You must be signed in to change notification settings - Fork 1
/
ProfileViewController.m
147 lines (102 loc) · 4.18 KB
/
ProfileViewController.m
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//
// ProfileViewController.m
// hn
//
// Created by Marcin Kmieć on 12.10.2014.
// Copyright (c) 2014 Marcin. All rights reserved.
//
#import "ProfileViewController.h"
#import "Utils.h"
#import "ProfileViewCell.h"
#import "RandomColor.h"
@interface ProfileViewController () <UIWebViewDelegate, UITableViewDelegate, UITableViewDataSource, UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UILabel *userNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *createdLabel;
@property (weak, nonatomic) IBOutlet UILabel *karmaLabel;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property UIButton *backButton;
@property CGFloat aboutWebviewHeight;
@property CGFloat lastOffsetY;
@end
@implementation ProfileViewController
#pragma mark - UIViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *author = [self.profileDescription objectForKey:@"id"];
self.userNameLabel.text = author;
UIColor *color = [RandomColor getRandomColorForNumber:[author hash]];
[self.userNameLabel setTextColor:color];
self.karmaLabel.text = [[self.profileDescription objectForKey:@"karma"] stringValue];
self.createdLabel.text = [Utils timeAgoFromTimestamp:[self.profileDescription objectForKey:@"created"]];
self.backButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 25, 40, 40)];
UIImage *image = [UIImage imageNamed:@"backButton2.png"];
[self.backButton setBackgroundImage:image forState:UIControlStateNormal];
[self.view addSubview:self.backButton];
[self.backButton addTarget:self
action:@selector(backButtonPressed)
forControlEvents:UIControlEventTouchUpInside];
self.tableView.delegate = self;
}
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
// Enable swipe to go back gesture
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
self.navigationController.interactivePopGestureRecognizer.delegate = self;
}
}
- (void)backButtonPressed{
[self.navigationController popViewControllerAnimated:YES];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - UITableViewDelegate
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.lastOffsetY = scrollView.contentOffset.y;
}
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
bool hide = (scrollView.contentOffset.y > self.lastOffsetY);
[UIView animateWithDuration:0.5 animations:^{
self.backButton.alpha = !hide;
}];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ProfileViewCell *cell = (ProfileViewCell *)[self.tableView dequeueReusableCellWithIdentifier:@"AboutCell" forIndexPath:indexPath];
cell.webView.tag = 111;
cell.webView.delegate = self;
cell.webView.scrollView.scrollEnabled = NO;
NSString *htmlString = [self.profileDescription objectForKey:@"about"];
if(htmlString == nil){
return cell;
}
htmlString = [Utils makeThisPieceOfHTMLBeautiful:htmlString withFont:@"Helvetica-Light" ofSize:16];
[cell.webView loadHTMLString:htmlString baseURL:nil];
return cell;
}
#pragma mark - UIWebViewDelegateUIWebViewDelegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = webView.frame;
frame.size.height = webView.scrollView.contentSize.height;
if(webView.tag == 111){ ///aboutWebView
self.aboutWebviewHeight = frame.size.height;
}
[self.tableView reloadData];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return self.aboutWebviewHeight;
}
@end