UITableView索引栏自定义

时间:2011-02-28 08:30:13

标签: objective-c uitableview ios4

我认为我的技能几乎是“基本的”,我理解我阅读的大部分内容并且看到了目标c,但这有点超出了我理解的范围。

我有一个带有透明背景的tableView以及透明单元格,不幸的是,我正在开发应用程序的人坚持通过主要是灰色的背景显示。我的问题是右边的索引栏。我已经读过,在定制时,文本颜色,背景颜色等都是不受限制的。有没有人创建自己的索引栏并将其附加到tableView的滚动方法?

像我说的那样,我甚至不知道从哪里开始。我所需要的只是我正确的方向。我需要创建一个小的UIView并玩触摸事件吗?

4 个答案:

答案 0 :(得分:4)

如果您想在索引栏中进行任何更改,则应使用CAlayer。

Set UITableViewCell background color using a CALayer

答案 1 :(得分:4)

就这样做:

if ([[self tableView] respondsToSelector:@selector(setSectionIndexColor:)])
{
    // In iOS 6 there is a own method available to set the index color
    [[self tableView] setSectionIndexColor:[UIColor whiteColor]];
}
else
{
    // Use this hack in previous iOS releases
    for(UIView *view in [self.tableView subviews])
    {
        if([view respondsToSelector:@selector(setIndexColor:)])
        {
            [view performSelector:@selector(setIndexColor:) withObject:[UIColor whiteColor]];
        }
    }
}

答案 2 :(得分:1)

从iOS 6开始,您可以使用sectionIndexColor设置垂直字母索引栏的字体颜色。当用户使用sectionIndexTrackingBackgroundColor手指拖动时,您还可以在垂直字母索引栏周围设置背景颜色。如果您还要定位iOS 5设备,请务必检查以确保设备为6或更高。 -rrh

//iOS 6 devices only
[[self tableView] setSectionIndexColor:[UIColor whiteColor]];

//if targeting devices prior to iOS6 prevent a crash by verifying device OS version
NSArray *versionCompatibility = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
NSInteger OSVersion = [[versionCompatibility objectAtIndex:0] intValue];
if (OSVersion >= 6) {
    [[self tableView] setSectionIndexColor:[UIColor whiteColor]];
}

答案 3 :(得分:0)

没有自然方式来自定义索引栏。 请尝试使用此自定义索引栏。它非常易于使用和定制:

https://github.com/debris/AIMTableViewIndexBar