2016-07-05 2 views
2

Моя проблема довольно прямолинейная. Я использую пользовательскую ячейку в UITableView. Ячейка прозрачная, а внутри ее contentView имеет еще UIView, который является белым, имеет закругленные углы и тень внизу.UIView Shadow Outside Parent View

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

Итак, мой вопрос заключается в следующем: могу ли я каким-то образом показать тень за пределами ячейки contentView? Или есть что-то еще, что я мог бы сделать?

EDIT: Вот мой код (это внутри подкласса UITableViewCell)

override func awakeFromNib() { 
    super.awakeFromNib() 

    // Rectangle 
    let rectangle = CGRectMake(10, 10, UIScreen.mainScreen().bounds.width-20 , 100) 
    let rectView = UIView(frame: rectangle) 

    // Rectangle Customization 
    rectView.layer.cornerRadius = 10 
    rectView.backgroundColor = UIColor.whiteColor() 
    rectView.layer.shadowColor = UIColor.blackColor().CGColor 
    rectView.layer.shadowRadius = 3 
    rectView.layer.shadowOpacity = 0.25 
    rectView.layer.shadowOffset = CGSize(width: 0, height: 5) 

    contentView.addSubview(rectView) 
} 
+0

Вы можете напрямую добавить UIView в ячейку. а не в cell.contentView Просто выполните cell.addSubView(), а не cell.contentView.addSubView() –

+0

Это не сработает. Код находится внутри пользовательского класса ячейки. Как мне получить доступ к этой ячейке? Autocomplete не будет показывать ничего по имени «cell» – Lawrence413

+0

'let cell = tableView.cellForRowAtIndexPath (indexPath) как! YourCustomCellClass' И тогда, 'cell.imageView.image = ...' –

ответ

1

Так что меняет стратегию немного. cells были 110pt tall и rectangle is 100pt tall. Прямоугольник был у Y = 10 внутри cell.

Так что это касалось дна и не хватало места для тени.

Тогда я просто установил Y = 0, так что в нижней части были доступны 10pts для тени. Затем, чтобы первая ячейка имела какое-то место в верхней части (10 пунктов, которые есть у других ячеек), я просто добавил пустой label в верхней части UITableView, который был ростом 10pt.

Не уверен, что лучшее решение, но оно работает, и я в порядке.

0

Изменить

contentView.addSubview(rectView) 

в

addSubview(rectView) 
+0

Такая же проблема. Кажется, что он просто автоматически добавляет его в 'contentView'. Тень все еще не полностью видима. – Lawrence413

+0

Добавьте свой код для тени. –

+0

Я только изменил эту строку. Я также попытался переместить его перед теневым кодом, но тот же результат. – Lawrence413

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