2016-12-20 3 views
1

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

func addShadow(to myView: UIView){ 
     let shadowPath = UIBezierPath(rect: CGRect(x: 0, y: 0, width: uiView.frame.width, height: uiView.frame.height * 1.1)) 
     uiView.layer.shadowColor = UIColor.black.cgColor 
     uiView.layer.shadowOffset = CGSize(width: 0.2, height: 0) 
     uiView.layer.shadowOpacity = 0.5 
     uiView.layer.shadowRadius = 5.0 
     uiView.layer.masksToBounds = false 
     uiView.layer.shadowPath = shadowPath.cgPath 
    } 

enter image description here

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

Заранее спасибо.

+0

Потому что вы добавить тень к вашему 'UITableView', которая фиксируется, и это не ваш' UITableView' который прокручивается. Вы прокручиваете свои камеры! –

+0

Как вы назвали метод 'addShadow'? –

+0

@AhmadF Я вызываю метод addShadow следующим образом: addShadow (to: tableViewController.view). Я не добавляю тень к самому представлению таблицы, но к виду контроллера табличного представления. –

ответ

0

Если вы добавляете тень на tableView, он будет прокручиваться вместе с данными таблицы. Чтобы не допустить, чтобы вы сначала добавили UIView. Добавьте представление таблицы на эту точку зрения. Добавьте тень для UIView, которую вы сделали. Он будет придерживаться назначенного местоположения.

0

Это мое решение в Swift 3 с UIView и CAGradientLayer внутри.

override func viewWillAppear(_ animated: Bool) { 
     addShadow(myView: myTab) 
} 

func addShadow(myView: UIView){   
    let shadowView = UIView() 
    shadowView.center = CGPoint(x: myView.frame.minX,y:myView.frame.minY - 15) 
    shadowView.frame.size = CGSize(width: myView.frame.width, height: 15) 
    let gradient = CAGradientLayer() 
    gradient.frame.size = shadowView.frame.size 
    let stopColor = UIColor.clear.cgColor 
    let startColor = UIColor.black.withAlphaComponent(0.8).cgColor 
    gradient.colors = [stopColor,startColor] 
    gradient.locations = [0.0,1.0] 
    shadowView.layer.addSublayer(gradient) 
    view.addSubview(shadowView) 
} 

enter image description here

+0

Роб, спасибо за ваш ответ. Но то, что я заметил в вашем коде, заключается в том, что тень добавляется в родительский вид представления таблицы. В представлении таблицы есть прикрепленный к нему распознаватель жестов, чтобы сместить его вниз и скрыть от него. Я бы поставил изображение с вашим кодом, теневой экран останется на месте, в то время как представление таблицы будет скользить вниз. Мне нужно, чтобы тень скользила с табличным представлением ** и ** не прокручивалась вне места при прокрутке информации в представлении таблицы. Для справки о том, что я ищу, вы можете взглянуть на официальное приложение Apple Map. –

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