Черные углы на UITableView Group Style

У меня проблема, когда мой UITableView (стиль группы) имеет черный «наконечник» над закругленным углом.

Я настраиваю фон таблицы так:

[meetingTableView setBackgroundColor:[[UIColor alloc] initWithPatternImage:[[UIImage alloc] initWithContentsOfFile:@"background.png"]]];

И мой табличный вид выглядит так:

черный заостренный край на закругленном угле http://papernapkin.org/pastebin/resource/images/imageEntryId/6487

Есть идеи, как мне избавиться от этих черных точек?

13.10.2009 01:47:12
Просто для проверки, он работает правильно, когда вы указываете цвет, как [UIColor blueColor]или [UIColor groupTableViewBackgroundColor]? Кроме того, то, что вы делаете, вероятно, создает утечку памяти: вы должны использовать [UIColor colorWithPatternImage:]вместо этого.
G Gordon Worley III 13.10.2009 01:59:16
9 ОТВЕТОВ
РЕШЕНИЕ

У меня такая же проблема. Когда я устанавливаю чистый цвет по xib, у меня есть задний угол. Решение состоит в том, чтобы установить его по коду!

(Та же проблема с интерфейсом построителя существует для веб-просмотров)

53
21.12.2010 08:59:43
Это работало для меня, когда больше ничего не делал. Установите цвет фона в IB на цвет сгруппированного табличного представления (по умолчанию). Затем в коде установите цвет на clearColor. У меня также есть ячейки с пометкой opaque = NO и clearsContextBeforeDrawing = NO, но одни эти настройки ничего не изменили, пока я не добавил clearColor по коду
Bdebeez 22.12.2010 20:01:23
Спасибо Амин. Похоже, что это теперь исправлено в iOS 5. Я видел эту ошибку при просмотре моего приложения на устройствах под управлением iOS 4.x, но не на iOS 5. Как только я установил цвет фона UITableView, чтобы очистить в коде, это исправило проблему на устройства iOS 4.x.
Christine 17.11.2011 01:34:38
Спасибо Амине за этот трюк. Также я согласен с Кристиной. Apple исправила это в ios5
iOSAppDev 9.04.2012 08:12:03
Я могу подтвердить, что это больше не проблема в iOS 5. Чтобы прояснить для iOS 4, свойство backgroundColor должно быть установлено в методе - viewDidLoad. Установка свойства в -init не работает.
phatblat 16.04.2012 19:46:06

Чтобы избежать черных углов, вы должны убедиться, что UITableViewCells не являются непрозрачными. Похоже, вы используете ячейки таблицы пользовательских стилей, а непрозрачным значением по умолчанию является YES. Либо перейдите к Интерфейсному Разработчику и снимите флажок непрозрачности, если ячейка таблицы была настроена в файле XIB. Или используйте setOpaque:NOсеттер для изменения значения.

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

1
13.10.2009 11:02:39
Сейчас нет моего Mac, так что я проверю это позже. Но если они не непрозрачны, разве ячейки таблицы не станут прозрачными и, следовательно, не белыми?
ThaDon 13.10.2009 14:17:53
Быть непрозрачным - это не то же самое, что иметь значение альфа <1,0; это скорее оптимизация системы рисования, чтобы дать ОС знать, нужно ли ей делать более дорогие композиции, или можно просто предполагать, что представление заполняет весь кадр.
Sixten Otto 20.10.2009 13:24:31
Это работало для меня на не красном фоне в собственном представлении. Когда белые черные углы появляются снова. (Во всяком случае, в симуляторе.)
Scott McKenzie 19.12.2010 22:15:30

На тот случай, если вы еще этого не знали, есть еще один изящный метод, который вы можете использовать для создания настраиваемых фонов для UITableView:

Не так просто, как установить фон, как вы делаете, но это дает вам гораздо больше гибкости и может масштабироваться до любого размера таблицы.

3
6.10.2012 09:24:02

Я предполагаю, что это связано с чем-то, что вы делаете в пользовательских ячейках табличного представления. Возможно, вы захотите поэкспериментировать с настройкой цвета фона ячейки [UIColor clearColor].

0
29.10.2009 20:14:45

Я думаю, что вы должны установить цвет фона вашей таблицы как clearColor и инициализировать ваш вид с фоновым изображением.

Тогда он точно не покажет черные углы. Но также не забудьте установить цвет фона вашей ячейки в белый цвет.

0
4.11.2009 04:25:43

Попробуйте это в viewDidLoadметоде вашего контроллера :

meetingTableView.backgroundColor = [UIColor clearColor];
16
11.01.2019 07:02:56

Приведенный выше голос с ответом выше (установите для фона tableView значение [UIColor clearColor]) может не сработать, если вы похожи на меня и никогда не используете UITableViewController, вместо этого поместив UITableView в UIViewController.

В этом случае не табличное представление должно иметь четкий фон, а представление, содержащее табличное представление.

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

self.view.backgroundColor = [UIColor clearColor];

Я предполагаю, что причиной черных углов является внутренняя оптимизация графики, а установка четкого фона исправляет это.

0
16.11.2010 07:28:39

Может быть, если вы положите yourTableViewOutlet.backgroundView=nil;

2
2.12.2011 16:10:59
Краткое объяснение было бы здорово.
Anup Cowkur 5.11.2012 10:49:25

Вы получите Черные углы в UITableView Group Style, если вы установите цвет фона, чтобы очистить цвет в XIB.

Вместо этого попробуйте этот код для удаления черных углов в UITableView Group Style

tableViewObject.backgroundColor=[UIColor clearColor];

3
1.06.2012 10:08:14