1.CGOffset这个函数的意思是:相对于源矩形原点(左上角的点)沿x轴和y轴偏移
CGRect detailTextLabelFrame = CGRectOffset(self.textLabel.frame, 0.0f, 25.0f);
2.关于block参数的理解:
- (void)reload:(id)sender {
[_activityIndicatorViewstartAnimating];
self.navigationItem.rightBarButtonItem.enabled =NO;
[Tweet publicTimelineTweetsWithBlock:^(NSArray *tweets) {
if (tweets) {
_tweets = tweets;
[self.tableViewreloadData];
}
[_activityIndicatorViewstopAnimating];
self.navigationItem.rightBarButtonItem.enabled = YES;
}];
}
通过这样直接利用参数值赋给成员变量。主要原因是参考方法publicTimelineTweetsWithBlock:此方法中
+ (void)publicTimelineTweetsWithBlock:(void (^)(NSArray *tweets))block {
[[AFTwitterAPIClientsharedClient] getPath:@"statuses/public_timeline.json"parameters:[NSDictionarydictionaryWithObject:@"false"forKey:@"include_entities"]success:^(AFHTTPRequestOperation *operation,id JSON) {
NSMutableArray *mutableTweets = [NSMutableArrayarrayWithCapacity:[JSON count]];
for (NSDictionary *attributesin JSON) {
Tweet *tweet = [[Tweetalloc] initWithAttributes:attributes];
[mutableTweets addObject:tweet];
}
if (block) {
block([NSArray arrayWithArray:mutableTweets]);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
#if __IPHONE_OS_VERSION_MIN_REQUIRED
[[[UIAlertViewalloc] initWithTitle:NSLocalizedString(@"Error",nil) message:[error localizedDescription]delegate:nilcancelButtonTitle:nilotherButtonTitles:NSLocalizedString(@"OK",nil), nil] show];
#else
[[NSAlert alertWithMessageText:NSLocalizedString(@"Error",nil) defaultButton:NSLocalizedString(@"OK",nil) alternateButton:nil otherButton:nil informativeTextWithFormat:[error localizedDescription]] runModal];
#endif
if (block) {
block(nil);
}
}];
}
此方法中并没有对tweets数组的直接赋值,应该类似于数组中自动对应,个人是这么理解的。
通过往revealController里面加入类似于frontviewController和rearviewController。然后以rearviewController里面引入一些revealviewController的方法。其中在这里有一个
//UIViewController类别,获取父实例
SWRevealViewController *revelController =self.revealViewController;
self自然对应的是rearviewController,因此两者之间建立了链接。
在UITableView中视图切换的方法:
/**
点击菜单切换视图
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPathanimated:YES];
//UIViewController类别,获取父实例
SWRevealViewController *revelController =self.revealViewController;
NSInteger row = indexPath.row;
//如果选择项没有变化,则直接关闭菜单
if (row ==_previouslySelectedRow) {
[revelController revealToggleAnimated:YES];
return;
}
//如果选择项发生变化,则切换至相应视图
_previouslySelectedRow = row;
UIViewController *viewController = nil;
switch (row) {
case 0:
{
MainViewController *firstController = [[MainViewControlleralloc] initWithNibName:@"MainViewController"bundle:nil];
UINavigationController *nav=[[UINavigationControlleralloc]initWithRootViewController:firstController];
viewController = nav;
nav.navigationBar.hidden=YES;
}
break;
case 9:
{
PersonCenterViewController *personcenter = [[PersonCenterViewControlleralloc] initWithNibName:@"PersonCenterViewController"bundle:nil];
UINavigationController *nav=[[UINavigationControlleralloc]initWithRootViewController:personcenter];
nav.navigationBar.hidden=YES;
viewController = nav;
nav.navigationBar.hidden=YES;
}
break;
default:
{
PersonCenterViewController *secondController = [[PersonCenterViewControlleralloc] initWithNibName:@"PersonCenterViewController"bundle:nil];
UINavigationController *nav=[[UINavigationControlleralloc]initWithRootViewController:secondController];
nav.navigationBar.hidden=YES;
viewController = nav;
nav.navigationBar.hidden=YES;
}
break;
}
//切换视图(是否带弹回动画)
[revelController setFrontViewController:viewControlleranimated:YES];
[revelController setFrontViewPosition:FrontViewPositionLeftanimated:YES];
}
int page = floor((botScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
对颜色的切割:
NSArray *colorArr=[[perDic objectForKey:@"Color"]componentsSeparatedByString:@","];