Я хочу получить моментальный снимок для ячейки после долгой печати, и я получаю его работу. Я создаю снимки с помощью этого кода:Получение снимка для некоторых ячеек не работает
func customSnapShotFrom(view:UIView) -> UIView { // calling this with UITableViewCell input
let snapshot:UIView = view.snapshotViewAfterScreenUpdates(false) // here I tried true and false
snapshot.layer.masksToBounds = false
snapshot.layer.cornerRadius = 0.0
snapshot.layer.shadowOffset = CGSizeMake(2.0, 2.0)
snapshot.layer.shadowOpacity = 1.0
return snapshot
}
Это работает, но иногда я получаю это сообщение на выходе:
мгновенных снимков вид, что не было вынесено результаты в пустой снимок. Убедитесь, что ваше представление было просмотрено как минимум один раз перед снимками или снимками после обновлений экрана.
Я получаю его только для некоторых из ячеек (всего несколько) и не всегда. Иногда он генерирует моментальный снимок из этой ячейки, когда он возвращает нуль. Я проверил, и у меня всегда есть ячейка ввода. Так почему это? Почему рендеринг результатов в пустой снимок? Благодаря
Edit: Я добавил жест распознаватель к моему Tableview:
let longPress = UILongPressGestureRecognizer(target: self, action: "longPressDetected:")
self.tableView.addGestureRecognizer(longPress)
И я создаю снимок в longPressDetected
метода:
func longPressDetected(sender: AnyObject) {
...
switch (state) {
case UIGestureRecognizerState.Began :
...
let cell:UITableViewCell = self.tableView.cellForRowAtIndexPath(indexPath)!
snapshot = self.customSnapShotFrom(cell)
...
Мой быстрое решение благодаря kirander answer :
func customSnapShotFrom(view:UIView) -> UIView {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0)
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let cellImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
let imageView = UIImageView(image: cellImage)
imageView.layer.masksToBounds = false
imageView.layer.cornerRadius = 0.0
imageView.layer.shadowOffset = CGSizeMake(2.0, 2.0)
imageView.layer.shadowRadius = 4.0
imageView.layer.shadowOpacity = 1.0
return imageView
}
откуда вы звоните этот метод? – kirander
Я отредактировал мой вопрос. Я удалил другой код из метода longPressDetected, потому что думаю, что это не важно для этой проблемы. –
Возможно, это из-за выбора ячейки? Попробуйте отключить выбор ячеек. – kirander