【问题标题】:iPhone Fixed-Position UITableView BackgroundiPhone 固定位置 UITableView 背景
【发布时间】:2009-12-25 06:14:21
【问题描述】:

我正在构建一个不使用 Interface Builder 的 iPhone 应用程序。我在下面的庄园中设置了一个分组的 UITableView 的背景:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]];

我正在尝试修复此背景图像,使其不会随着表格单元格滚动。有谁知道怎么做?

【问题讨论】:

  • Interface Builder 有什么问题?
  • 我搞砸了一段时间,但发现我想做的事情更容易用代码编写。我不反对将来使用它。

标签: iphone uitableview background


【解决方案1】:

我们发现它完全按照您的要求工作,如果您不使用 backgroundColor,而是将其分配给 backgroundView,如下所示:

self.tableView.backgroundView = [[UIImageView alloc] initWithImage:
                 [UIImage imageNamed:@"background.png"]];

然后表格单元格在静止的背景上滚动。 (我相信从 SDK 3.2 版开始就可以使用了。)

【讨论】:

  • 确认在 iOS 5.1 中工作。恕我直言,这个答案应该被接受,它比经常宣传的在表格视图后面添加子视图的方法更广泛适用(只有在您不使用 UITableViewController 时才能正常工作)。
【解决方案2】:

您可以使用如下的图案图像来实现静止的背景:

UIView *patternView = [[UIView alloc] initWithFrame:tableView.frame];
patternView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]];
patternView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
tableView.backgroundView = patternView;

【讨论】:

    【解决方案3】:

    有点晚了,但也许对于所有其他正在寻找解决方案的人来说。我可以通过在UITableViewControllerviewDidLoad 方法中调用parentViewController 来完成这项工作:

    self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
    self.tableView.backgroundColor = [UIColor clearColor];
    

    或仅使用背景颜色:

    self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
    self.tableView.backgroundColor = [UIColor clearColor];
    

    我花了一段时间才弄明白,但现在它就像一个魅力。

    【讨论】:

      【解决方案4】:

      您可以在 UITableView 下方放置一个额外的视图并设置其背景,因此如果 UITableView 是透明的 - 您将实现您的目标 - 它会有正确的背景并且不会滚动。

      【讨论】:

      • 这意味着对 UITableView 进行 alpha 混合。您是否注意到使用此方法会导致性能下降?
      • 我在一个非常简单的情况下使用它,因此没有看到任何退化。所以知道它的唯一方法就是尝试它,它应该不会花费太多时间。
      • 嗯...听起来不错,但我仍然遇到一些问题。我将以下代码放在 UITableViewController 的 ViewDidLoad 中: self.view.backgroundColor = [UIColor clearColor]; UIImageView *background = [[UIImageView alloc]initWithImage: [UIImage imageNamed: @"groupedBackground.png"]]; [self.view addSubview: 背景]; [self.view sendSubviewToBack: 背景];由于“背景”仍在 tableView 中,它会随其余部分一起滚动,并且单元格不会显示在背景图像之上。
      • 您可以创建一个简单的 UIViewController 并将背景 + 表格放置到主视图中。
      • 明确一点,这不适用于UITableViewController,因为在UITableViewController self.view == self.tableView 中。如果您将UITableView 添加到UIViewController,它会起作用,但是
      【解决方案5】:

      在 swift 3.0 中使用下面的代码来实现 tableview 的恒定背景

       self.tableView.backgroundView = UIImageView(image: UIImage(named: "background.png")!)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多