2013-09-18 3 views
24

Когда я обновил приложение my от iOS6 до iOS7, я заметил, что где в iOS6 содержимое ячеек было разрешено пересекать вне ячейки, когда для свойства clipsToBounds установлено значение NO on вид ячеек или contentView, iOS7, похоже, отключает это, даже если общий просмотр, tableview, cell и cellcontent clipsToBounds все установлены как NO. Вы можете увидеть образец этого во включенных изображениях. Первый тестовый код работает на iOS6, а второй тот же код работает на iOS7:Как остановить UITableView от обрезания содержимого UITableViewCell в iOS 7

A sample of this running on iOS6 Identical code running on iOS7 Кто-нибудь знает, как решить эту проблему? Я предполагаю, что это всего лишь однострочное исправление, но я потратил несколько часов на это без везения. Чтобы избежать серьезного переписывания и головных болей, которые я делал, но играя с обзором, таблицами, ячейками и ячейками, клипыToBounds были бесплодными - все на NOOS все равно на iOS7, поэтому я не уверен, что происходит по-другому.

Вы можете увидеть и скачать образец проекта по адресу: https://github.com/Jon-Schneider/ClipsToBoundsTest

Спасибо!

+0

Не уверен, если это будет работать, но попробуйте установить 'clipsToBounds'to NO на обоих клеток и вид таблицы. – LuisCien

+0

Я пробовал это, и это не сработало. Как оказалось, добавлен новый слой между основным представлением ячейки и представлением содержимого, для которого клипТобокс установлен по умолчанию YES. Принятый ответ более подробно. – jonschneider

ответ

72

Похоже, что иерархия представлений немного изменилась в ios7 для ячеек таблицы.

Вы можете попробовать установить клипы в пределах на надтаблицы в contentView в:

[cell.contentView.superview setClipsToBounds:NO]; 

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

[cell.contentView.superview setClipsToBounds:NO]; 
NSLog(@"%@", cell.contentView.superview); 
NSLog(@"%@", cell.contentView.superview.superview); 
NSLog(@"%@", cell); 

if (self.view.clipsToBounds) { 
    NSLog(@"Master clips"); 
} else { 
    NSLog(@"Master no clip"); 
} 
+3

Похоже, что в iOS 7.1 у UITableViewCellScrollView ячейки есть клипы, которые явно установлены в NO. Это также происходит с UITableViewCellContentView. –

7

Вы можете сделать чанг в инспекторе атрибутов tableview в Clip Subviews.

enter image description here

+0

Теперь это реальный ответ! Спасибо! –

Смежные вопросы