样式化的 UITableViewCell(试图复制 Facebook iPhone App Look)[重复]

Posted

技术标签:

【中文标题】样式化的 UITableViewCell(试图复制 Facebook iPhone App Look)[重复]【英文标题】:Styled UITableViewCell (trying to copy Facebook iPhone App Look) [duplicate] 【发布时间】:2012-03-23 10:12:32 【问题描述】:

在 Facebook iPhone 应用程序的左侧有一个滑出视图,显示UITableView

我正在尝试复制此表格的外观,每个单元格都有似乎是自定义边框(看起来像一条非常细的浅灰色和黑色线条?)。此外,在选择单元格时,单元格会以深灰色突出显示,而不是默认的蓝色。

我尝试在 *** 上搜索,确实有一个类似的问题,但只有两个回复回复使用 Three20 库。

我想知道如何使用UIKit 实现相同的外观,而不必使用Three20 库。

任何有关如何重现 UITableViewCell 特定样式的帮助将不胜感激!

编辑#1:澄清一下,我知道如何用图像和文字自己制作UITableViewCells。我不知道怎么做的部分是自定义边框和选择颜色,使其看起来像 Facebook 示例图像。

编辑#2:可以肯定的是,我也不是在问如何制作滑出视图。我只是在询问如何根据下面 Facebook iphone 应用程序的屏幕截图来设置表格的样式。 :)

谢谢!

【问题讨论】:

【参考方案1】:

可以通过使用自定义行的图像和滑动效果的动画来完成

【讨论】:

我正要进行编辑。我找到了这个链接:cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html,他似乎只是在使用图像作为行。所以除了为每一行使用图像之外,你可以用 UIKit 做些什么吗?我认为可能有一些 CALayer 诡计...... 实际上您可以更改单元格背景和分隔符的颜色,但这不会给您想要的感觉。为此,使用图像是最好的选择,也是一种简单的方法,它会给你同样的效果 谢谢,这就是我的怀疑! :)【参考方案2】:

这是一个有左右菜单的 Slider,你显然可以像我一样在代码中禁用右边的菜单!

滑出式菜单:DDMenuController

这是我做的一些自定义,看起来像 FB 的,只是不是图片!

LeftController.m

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

- (void)viewDidLoad 
[super viewDidLoad];

navBarMenuArray = [[NSArray alloc] initWithObjects:
                   @"My Photos",
                   @"My Friends",
                   @"Inbox",
                   @"Stores",
                   @"Offers",
                   @"Settings",nil];

navBarImagesArray = [[NSArray alloc] initWithObjects:
                     @"photos.jpg",
                     @"friends.jpg",
                     @"inbox.jpg",
                     @"stores.jpg",
                     @"settings.jpg", nil];

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 240.0, 45.0)];
searchBar.tintColor = UIColorFromRGB(0x0075bb);
searchBar.placeholder = @"Search a brand or store...";
[self.view addSubview:searchBar];
[searchBar release];

if (!_tableView) 
    //UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 44, 320, 506) style:UITableViewStylePlain];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    tableView.delegate = (id<UITableViewDelegate>)self;
    tableView.dataSource = (id<UITableViewDataSource>)self;
    [self.view addSubview:tableView];
    self.tableView = tableView;
    


- (void)viewDidUnload 
[super viewDidUnload];
self.tableView = nil;


- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section 
    return navBarMenuArray.count;


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
    return 1;


- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    static NSString *CellIdentifier = @"CellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if(cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    
    cell.textLabel.font = [UIFont fontWithName:@"ArialMT" size:17];
    cell.textLabel.text = [navBarMenuArray objectAtIndex:indexPath.row];
    cell.textLabel.textColor = UIColorFromRGB(0xa2a9b9);
    cell.textLabel.shadowColor = UIColorFromRGB(0x212838);
    cell.textLabel.shadowOffset = CGSizeMake(1.0, 1.0);
    cell.textLabel.backgroundColor = UIColorFromRGB(0x32394b);
    self.tableView.backgroundColor = UIColorFromRGB(0x32394b);
    self.tableView.separatorColor = UIColorFromRGB(0x262d3d);
    return cell;

【讨论】:

以上是关于样式化的 UITableViewCell(试图复制 Facebook iPhone App Look)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在普通样式表视图上设置 UITableViewCell 背景颜色?

UITableViewCell 滚动时复制 UITextfield 子视图

所有样式化的组件都返回任何 (@types/styled-components)

注册 UITableViewCell 以供重用时,该单元格上的哪个 init 方法被调用? [复制]

UITableViewCell 样式字幕多行不起作用

使用 UIAppearance 设置 UITableViewCell 文本样式