为什么设置tableview背景图片时tableview单元格几乎不可见?

发布于 2024-08-20 17:05:09 字数 1393 浏览 4 评论 0原文

加载背景图像时,我无法使 searchResultsTableView 单元格完全可见。这些单元格看起来相当弱,即使被选中,也不会从背景图像视图中脱颖而出。有什么建议吗?

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {

    for (UIView *view in controller.searchResultsTableView.subviews) {
        //if ([view isKindOfClass:[UIImageView class]]) {
            [view removeFromSuperview];
        //}
    }

    UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
    UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
    //backgroundImageView.opaque = NO;
    backgroundImageView.alpha = 0.9;

    controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
    [controller.searchResultsTableView addSubview:backgroundImageView];
    [controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
    controller.searchResultsTableView.rowHeight = 25;

    [patternImage release];
    [backgroundImageView release];  
}

除了在这个委托方法中分配一个新的 UITableViewCell 供使用(在 searchResultsTableView 中)之外,我没有做任何其他事情:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { .... } 

感谢您的任何更正!

(我用的是iPhone模拟器3.1.2)

I can't get the searchResultsTableView cells to be fully visible when loading with a background image. The cells look quite weak and don't stand out from the background imageview, even when selected. Any suggestions?

- (void)searchDisplayController:(UISearchDisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView {

    for (UIView *view in controller.searchResultsTableView.subviews) {
        //if ([view isKindOfClass:[UIImageView class]]) {
            [view removeFromSuperview];
        //}
    }

    UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
    UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
    //backgroundImageView.opaque = NO;
    backgroundImageView.alpha = 0.9;

    controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
    [controller.searchResultsTableView addSubview:backgroundImageView];
    [controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
    controller.searchResultsTableView.rowHeight = 25;

    [patternImage release];
    [backgroundImageView release];  
}

I am not doing anything else than allocating a new UITableViewCell for use (in searchResultsTableView) inside this delegate method:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { .... } 

Thanks for any corrections!

(I am on iPhone simulator 3.1.2)

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

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

发布评论

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

评论(3

心是晴朗的。 2024-08-27 17:05:09

@Jessedc

谢谢你的建议。还没有尝试过你的代码。

我解决了这个头痛(在我看到你的回复之前),每当 searchResultsTableView 加载时,在 searchResultsTableView 后面的主表视图上设置 hide=YES ,并在搜索结束时设置 hide=NO 。主表格视图在图像视图顶部设置为backgroundColor=[UIColorclearColor](加载了与我原来的searchResultsTableView代码中相同的图像)。

这个新的布局正如以前所期望的:-)。

@Jessedc

Thanks for your advice. Haven't tried out your code yet.

I solved this headache (before I saw your reply) by setting hidden=YES on the main tableview behind the searchResultsTableView whenever the searchResultsTableView loads, and hidden=NO when the search is over. The main tableview is set with backgroundColor=[UIColor clearColor] on top of an imageview (loaded with the same image as in my original searchResultsTableView code up there).

This new layout is as previously desired :-).

花落人断肠 2024-08-27 17:05:09

是否尝试显示静态背景图像,并且表格文本在顶部滚动?
我认为你的代码可能有点混乱(可能)。

自定义表格通常在 viewWillAppear 方法中完成。所以这段代码应该放在那里:

UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
//backgroundImageView.opaque = NO;
backgroundImageView.alpha = 0.9;

controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
[controller.searchResultsTableView addSubview:backgroundImageView];
[controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
controller.searchResultsTableView.rowHeight = 25;

[patternImage release];
[backgroundImageView release]; 

接下来,在您的委托方法 searchDisplayController:willShowSearchResultsTableView 中,您没有引用传入的 tableview 对象,但您通过顶层调用它(也许没有必要?

)继续将表设置代码移至 viewWillAppear 中。
让我知道这是否有帮助,或者您是否可以提供更多信息/代码。

Are trying to display a static background image with the table text scrolling over the top?
I think you may have your code a little mixed up (possibly).

Customising a table is usually done in a viewWillAppear method. so this code should go there:

UIImage *patternImage = [UIImage imageNamed:@"background_newer.png"];
UIImageView * backgroundImageView = [[UIImageView alloc] initWithImage:patternImage];
//backgroundImageView.opaque = NO;
backgroundImageView.alpha = 0.9;

controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
controller.searchResultsTableView.backgroundColor = [UIColor clearColor];
[controller.searchResultsTableView addSubview:backgroundImageView];
[controller.searchResultsTableView sendSubviewToBack:backgroundImageView];
controller.searchResultsTableView.rowHeight = 25;

[patternImage release];
[backgroundImageView release]; 

Next, in your delegate method searchDisplayController:willShowSearchResultsTableView you are not referring to the tableview object passed in, but you are calling it through the top level (unnecessary perhaps?)

Have a go at moving your table setup code into the viewWillAppear.
Let me know if this helps, or if you can provide more information/code.

等风也等你 2024-08-27 17:05:09

在我看来,您正在以困难的方式设置桌面视图的背景。我不知道这是否是 100% 的问题,但你应该像这样设置你的 UITableView 背景:

controller.searchResultsTableView.backgroundColor = [[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_newer.png"] ]自动释放];

It seems to me like you're setting the background of your tableview the hard way. I don't know if it's 100% the problem, but you should set your UITableView background like this:

controller.searchResultsTableView.backgroundColor = [[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background_newer.png"]]autorelease];

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