iOS学习笔记2013.06.04

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数组的直接赋值,应该类似于数组中自动对应,个人是这么理解的。

3.对于afnetwork中iOS example,对于post类其实就是对数据的封装。类似于一个数据源的作用
为什么不仅仅定义了一个model原型,还有一个user模型,是因为一部分数据可以从user里取出,一部分需要从相应的网络接口取出。
4.今天学习的滑动菜单,主要是通过对SWRevealViewController类的使用,里面的动画,页面覆盖已经封装好了。其实里面有几个小问题还是不是很清楚。大体的一个过程:

通过往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];

}

5.uipagecontrol中的page计算常用公式:

int page = floor((botScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;

对颜色的切割:

 NSArray *colorArr=[[perDic objectForKey:@"Color"]componentsSeparatedByString:@","];





发布了11 篇原创文章 · 获赞 0 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章