在基于导航的应用程序中将背景图像添加到 UITableViewController

发布于 2024-08-13 00:50:00 字数 652 浏览 3 评论 0原文

我有一个基于导航的应用程序,我将 UITableViewControllers 推入堆栈。我想向我的所有 UITableViewControllers 添加背景 UImage。不是 UIColor,而是 UImage。我知道如何使用 Nib 文件并将 UITableView 本身设置为使用 [UIColor ClearColor] 来做到这一点,但我不知道想要浏览我所有的 UITableViewControllers 并将它们更改为使用 Nib 文件等。

我还发现 这个解决方案 如果我只使用一个我的应用程序中的 tableviewcontroller 。我认为可能有一种方法可以完成这项工作,通过在 UITableViewController 中默认创建的表视图“下方”添加一个子视图?

任何建议都会很棒。

I have a navigation based app where I push UITableViewControllers onto the stack. I would like to add a background UImage to all of my UITableViewControllers. Not a UIColor, but an UImage. I know how I can do this using a Nib file and setting the UITableView itself to have use [UIColor ClearColor], but I don't want to go through all my UITableViewControllers and change them to using Nib files, etc.

I also found this solution which would be great if I was just using a single tableviewcontroller in my app. I think there might be a way to make this work, by adding a subview "below" my table view that is created by default in a UITableViewController?

Any suggestions would be great.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

怪我入戏太深 2024-08-20 00:50:00

在基于导航的应用程序中,这有点不同:只需更改每个表视图所在的导航视图的背景即可。将以下代码放在每个 UITableViewController 的 viewDidLoad 中是可行的:

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

但是您可能只需要在导航控制器的顶层执行一次,而不是在每个 tableview 控制器中(尽管您仍然有将每个背景设置为清除)。

It's a little different in a navigation based app: just change the background of the navigation view that each table view is sitting on. Placing the following code in viewDidLoad of each UITableViewController works:

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

But you may only need to do it once, at the top level of the navigation controller, rather than in each tableview controller (although you'll still have to set each background to clear).

陈独秀 2024-08-20 00:50:00

在 iOS6 上使用:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];

On iOS6 use this:

UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];
只为守护你 2024-08-20 00:50:00

如果您的类是 UIViewController 子类,那么您可以这样做:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];

If your class is a UIViewController subclass then you can do it like this:

[self.view setBackgroundColor:
     [UIColor colorWithPatternImage:
      [UIImage imageWithContentsOfFile:
       [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
        @"background.png"]]]];
一杯敬自由 2024-08-20 00:50:00
UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

正如戈尔姆所说

只需在 UINavigationController 的顶层执行一次

UIImageView *backgroundView = 
  [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0, 
                                  0, 
                               self.navigationController.view.frame.size.width, 
                               self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
                                  UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];

As Gorm said

only need to do it once, at the top level of the UINavigationController

洋洋洒洒 2024-08-20 00:50:00

我的 Madhup 给出的答案是正确的答案。 UITableViewController 是 UIViewController 的子类,因此将其添加到 UITableViewController 的 viewDidLoad 方法中效果很好。

The answer given my Madhup is the correct answer. UITableViewController is a subclass of UIViewController, so adding that to your UITableViewController's viewDidLoad method works great.

乖乖公主 2024-08-20 00:50:00

从 iOS 3.2 开始,存在 -[UITableView setBackgroundView:],这可能比未来提出的一些其他解决方案更容易。

As of iOS 3.2, -[UITableView setBackgroundView:] exists, which may be easier than some of the other proposed solutions going forward.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文