UITableview фоновый вид цвет-телефон - PullRequest
2 голосов
/ 21 мая 2011

У меня есть контроллер UITableview без XIB.Я установил цвет фона табличного представления следующим образом:

[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:
                                    [UIImage imageNamed:@"MmyImage.png"]]];

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

Я хотел бы установить для фона табличных представлений прозрачный цвет и установить цвет суперпредставления для изображения, чтобы табличное представление плавно переходило поверх суперпредставления.Однако приведенный ниже код не работает:

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

Это делает фон полностью белым, я не знаю почему.

Помощь оценена .. спасибо.

Отредактировано: newкод, но это также не работает:

   UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]];
     imgBg.frame = self.tableView.window.bounds;
    [self.tableView.superview addSubview:imgBg];
//[self.view addSubview:imgBg];
    //[self.tableView.window sendSubviewToBack:imgBg];
    //[self.view  bringSubviewToFront:self.tableView];
    [self.tableView setBackgroundColor:[UIColor clearColor]];
    [imgBg release];

Ответы [ 3 ]

6 голосов
/ 21 мая 2011

В пользовательском подклассе UITableViewController, self.view вернет то же, что и self.tableView.Итак, то, что вы делаете, - это изменение одного и того же объекта.В конце концов, вы увидите UIWindow.Таким образом, чтобы получить желаемый результат, вы должны сделать это -

[self.view.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]]];
[self.tableView setBackgroundColor:[UIColor clearColor]];

UITableView имеет свойство backgroundView.Используйте это.

aTableView.backgroundView = [[[UIView alloc] initWithFrame:aTableView.bounds] autorelease];
aTableView.backgroundView.backgroundColor = backgroundColor;
0 голосов
/ 21 мая 2011

Сначала в вашем xib-файле добавьте родительское представление. добавить табличное представление в этом родительском представлении. установите цвет фона родительского вида на нужный вам фон. затем установите цвет фона для табличного представления на [UIColor clearColor].

Проверьте также, является ли ваше табличное представление стилем групповой таблицы или нет? если это стиль групповой таблицы, то ячейка имеет различный фон. Затем вам нужно очистить фон каждой ячейки. Лучший способ сделать это,

  1. создать бланк UIView *bkview = [[UIView alloc] initWithRect:CGRect(0,0)];

  2. установить это как фоновый вид ваших клеток.

Надеюсь, это сработает.

0 голосов
/ 21 мая 2011

тогда ваш второй код будет правильным, кроме:

[self.view setBackgroundColor:[UIColor colorWithPatternImage:
                               [UIImage imageNamed:@"myImage.png"]]];

заменить это:

UIImageView * imgBg = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"myImage.png"] stretchableImageWithLeftCapWidth:6 topCapHeight:6]];
imgBg.frame = self.view.bounds;
[self.view addSubview:imgBg];
[self.view sendSubviewToBack:imgBg];

Редактировать Я думаю: [self.tableView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]]; Воля помогает, вот единственное отличие.

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