iPhone: проблема с фоновым изображением сгруппированного TableView - PullRequest
3 голосов
/ 02 августа 2010

Привет всем, похоже, это должно быть просто;Я действительно надеюсь, что это так.Как всегда, спасибо заранее!

Все, что я пытаюсь сделать, это добавить фоновое изображение в табличный вид сгруппированного стиля.Я использую следующий метод в viewDidLoad:

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

К сожалению, background.png, кажется, рисуется не только за ячейками, но и на фонах ячеек и заголовков следующим образом:

alt text http://www.freeimagehosting.net/uploads/194449ffc1.png

Я знаю, что на этом сайте есть несколько вопросов, касающихся подобных проблем, но я боюсь, что я не смог заставить что-либо работать. Как настроить фон UITableView (стиль табличного представления «Сгруппированный») для использования изображения? побудил меня добавить

self.tableView.opaque = NO;
self.tableView.backgroundView = nil;

к viewDidLoad и добавить

cell.backgroundView = nil;
cell.opaque = NO;

в настройке моих ячеек.Излишне говорить, что это не сработало.Добавление

cell.backgroundColor = [UIColor clearColor];

тоже не сработало.И, к сожалению, это была моя последняя идея.Я бы очень хотел сделать это без добавления фона в интерфейсный конструктор, если это возможно.Мне скорее нравится делать столько, сколько я могу программно.Я надеюсь спросить, что не слишком жадный.Еще раз спасибо!

* * * РЕДАКТИРОВАТЬ: * * *

Я столкнулся с другим подходом для достижения этой цели, но столкнулся с другой проблемой.Я добавил следующий код для viewDidLoad:

    UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
    [self.tableView.window addSubview:bgView];

    [self.tableView addSubview:bgView];
    [self.tableView sendSubviewToBack:bgView];

Это выглядело многообещающе, и это, вероятно, так, но, к сожалению, дало мне следующее: alt text http://www.freeimagehosting.net/uploads/c02dd68e20.png

Выглядит так, как будто этолибо они не были отправлены обратно, а заголовки каким-то образом просвечивают, либо клетки пошли назад.Я совсем не уверен.Любой совет здесь также будет оценен.

Вот где я нашел код для редактирования: Добавьте UIView за UITableView в коде UITableViewController

Ответы [ 5 ]

4 голосов
/ 24 августа 2010

Я прошел путь, подобный тому, что вы описали здесь. Я наконец нашел ответ, который работал для меня в следующем посте:

Как установить фон UITableView для изображения?

Это были две строки кода, размещенные пользователем rkb. Вот код:

self.tableView.backgroundColor = [UIColor clearColor];

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithData:imageData]];
3 голосов
/ 12 августа 2012

Другое решение, если здесь ничего не работает. В ViewDidLoad:

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

Это позволит разместить статический (не растягивать и не перемещать) фон за всеми вашими сгруппированными элементами табличного представления, такими как заголовки и ячейки.

2 голосов
/ 11 февраля 2011

Используя предыдущие ответы (в частности, от dana_a), я получил то же самое для работы

self.tableView.backgroundColor = [UIColor clearColor]; self.parentViewController.view.backgroundcolor = [UIColor colorWithPatternImage: [UIImge imageNamed: @ "bgtest2.png"]];

Это в моем viewWillAppear: метод для моего случая детализированный контроллер представления с сгруппированным табличным представлением.

1 голос
/ 04 августа 2011

Я поместил этот код в мой метод ViewDidLoad, и он работал прекрасно.

self.termsTableView.backgroundColor = [UIColor clearColor];

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"metal4.png"]];
0 голосов
/ 02 августа 2010

Я до сих пор не понял, почему вышеописанное не работает или как его изменить, но добавив subView к окну в делегате приложения вместо tableView, я смог получить егона работу.

Вместо того, чтобы просто заставить его работать и двигаться дальше, я бы хотел научиться, поэтому мне все еще интересно, где я ошибся выше.Таким образом, я оставлю это без ответа на некоторое время, и если вы можете сказать мне мою ошибку (я), я дам вам голосование и зеленую галочку.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...