自定义friendsPickerViewController的样式

时间:2012-12-24 23:15:52

标签: objective-c ios facebook sdk

有没有办法自定义 facebook ios sdk 3.1 提供的friendsPickerViewController的样式?

我正在尝试更改facebook friendsPickerViewController中导航栏的外观。

似乎没什么用。甚至没有以下内容:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"customNavBarBGImage"]  forBarMetrics:UIBarMetricsDefault];

4 个答案:

答案 0 :(得分:3)

这是可能的,但这有点像黑客。首先,FBFriendPickerViewController使用UIToolbar代替UINavigationBar

您必须展示FBFriendPickerViewController,然后浏览其视图的子视图,找到顶部显示的UIToolbar。找到UIToolbar后,您可以根据需要对其进行修改。

因此,在任何视图控制器将显示朋友选择器的代码中,您可以这样做:

FBFriendPickerViewController *fbFriendPickerController = [[FBFriendPickerViewController alloc] init];

[fbFriendPickerController loadData];
[self presentViewController:fbFriendPickerController animated:NO completion:nil];

//Search through subviews of friendPicker until we find the UIToolbar
//NOTE: you have to do this after calling [self presentViewController...], otherwise
//the UIToolbar won't be in the array of subviews
NSArray *subs = [fbFriendPickerController.view subviews];
for (UIView *child in subs) {
    if ([child isKindOfClass:[UIToolbar class]]) {
        UIToolbar *bar = (UIToolbar *)child;
        [bar setBackgroundImage:[UIImage imageNamed:@"YOUR_IMAGE.png"] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
    }
}

答案 1 :(得分:0)

不幸的是,您无法自定义导航栏的外观。自定义仅限于显示/隐藏已完成按钮和工具栏等功能,以及过滤掉要在选择器中显示的朋友。

答案 2 :(得分:0)

如果要自定义它,则必须创建一个新的视图控制器,它将FBFriendPickerViewController子类化为XIB文件。

在你的xib文件中,为你的导航添加一个标题视图,一个tableview和一个微调器。将tableview和微调器链接到文件所有者。并根据需要自定义标题视图。

答案 3 :(得分:0)

如果您的应用中的所有工具栏都没有任何问题,请尝试:[[UIToolbar appearance] setTintColor:[UIColor myColor]];

在你的app委托的 didFinishLaunchingWithOptions 方法中。

感谢gwilkins指出它是一个UIToolbar!