【问题标题】:Presenting a semi-transparent UITableView from a UIViewController从 UIViewController 呈现半透明的 UITableView
【发布时间】:2013-11-26 17:44:36
【问题描述】:

我正在开发一个应用程序,该应用程序将依赖一个主视图控制器,底部有一排按钮来显示带有信息的其他视图。从其中一个按钮中,我想呈现一个显示歌曲标题列表的表格视图。这个应用程序播放声音文件,我希望用户能够点击一个按钮,然后选择一首歌曲作为默认歌曲播放。我想用 uiview 动画呈现这个 tableview,我希望它是半透明的并且只填充屏幕的一部分。我尝试创建一个 UITableViewController,然后从主视图控制器中呈现它,如下所示:

UITableViewController *tableView = [[UITableViewController alloc]init];
[self presentViewController:tableView animated:YES completion:nil];

这提供了一个视图控制器,但它会填满整个屏幕,这不是我想要的。并且在实例化时更改视图控制器的框架似乎没有效果。我可以将 UITableView 动画到主视图控制器的视图中,但是我不太确定谁应该是委托和数据源。有什么建议?提前致谢。

【问题讨论】:

  • 你想要什么类型的动画?听起来您应该在视图(表格)而不是新控制器中制作动画。
  • 我只是使用 [UIView animateWithDuration:] 为视图设置动画。如果我只使用视图,动画效果很好,但我不确定是否可以通过这种方式阻止 UITableView,因为它需要数据源和委托。当我将表格视图动画化到视图中时,我可以将主视图控制器设置为委托和数据源吗?
  • 是的,当然可以。任何采用 UITableViewDataSource 协议的对象都可以作为表格数据源。
  • “prevent”应该是“present”。好吧,我会试一试。我想我只是让自己感到困惑,因为我以这种方式呈现了一个表格视图。如果我成功了,我会发布代码。谢谢

标签: ios iphone uitableview uiview uiviewcontroller


【解决方案1】:

在将表格视图添加为子视图时,您可以设置其框架大小或边界,并以您喜欢的动画方式显示它。是的,您可以在添加时将委托和数据源设置为 self。

我使用:(在 viewDidLoad 中)

 self.tableView.backgroundColor = [UIColor clearColor];
    self.tableView.opaque = NO;

然后在 cellForRowAtIndexPath:

cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];
    cell.backgroundColor = [UIColor colorWithWhite:1 alpha:.55];

不确定这是否是您想要的,但它让您可以选择让一切变得清晰。 (显然 alpha 会因您的情况而改变,但这会衡量细胞的不透明度)

【讨论】:

    猜你喜欢
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    相关资源
    最近更新 更多