Swift: UIView.insertSubview(, aboweSubview) не работает на iOS 8
Это беспокоит меня уже несколько часов, и я не могу найти решение:(.
у меня есть UITableView
и когда я нажимаю на строку, я хочу показать подробную информацию для этой строки в "Карточке". Я добавляю карту в окно ключа, потому что хочу, чтобы она была выше UINavigationBar
и иметь прозрачный вид на фоне карты
Вот так выглядит мой код
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.vwCard.removeFromSuperview()
let keyWindow = UIApplication.sharedApplication().keyWindow
let screen = UIScreen.mainScreen().bounds
vwTransparentView = UIView(frame: screen)
vwTransparentView.backgroundColor = UIColor.blackColor()
vwTransparentView.hidden = true
vwTransparentView.userInteractionEnabled = false
keyWindow?.addSubview(self.vwCard)
keyWindow?.insertSubview(self.vwTransparentView, belowSubview: self.vwCard)
vwCard.center = CGPointMake((screen.width/2), (screen.height/2))
vwCard.hidden = true
vwCard.layer.borderColor = UIColor.whiteColor().CGColor
}
Когда я нажимаю на UITableView
грести это происходит
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
vwCard.hidden = false
vwCard.alpha = 0
vwTransparentView.alpha = 0
vwTransparentView.hidden = false
vwCard.transform = CGAffineTransformMakeScale(1.2, 1.2)
UIView.animateWithDuration(0.3, animations: { () -> Void in
self.vwCard.alpha = 1
self.vwCard.transform = CGAffineTransformIdentity
self.vwTransparentView.alpha = 0.4
})
}
Так выглядит экран в iOS 7 (7.1)
И вот как это выглядит в iOS 8 (8.3)
Я хочу, чтобы в iOS 8 все выглядело так же, как в iOS 7. Не знаю, почему keyWindow?.insertSubview(self.vwTransparentView, belowSubview: self.vwCard)
не работает. Я также попробовал это наоборот insertSubview( ,aboweView:)
1 ответ
Видимо, мне нужно было переместить код в viewDidLayoutSubviews()
Также я добавил строку vwCard.setTranslatesAutoresizingMaskIntoConstraints(true)
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.vwCard.removeFromSuperview()
let keyWindow = UIApplication.sharedApplication().keyWindow
let screen = UIScreen.mainScreen().bounds
vwTransparentView = UIView(frame: screen)
vwTransparentView.backgroundColor = UIColor.blackColor()
vwTransparentView.hidden = true
vwTransparentView.userInteractionEnabled = false
keyWindow?.addSubview(self.vwCard)
keyWindow?.insertSubview(self.vwTransparentView, belowSubview: self.vwCard)
vwCard.center = CGPointMake((screen.width/2), (screen.height/2))
vwCard.hidden = true
vwCard.setTranslatesAutoresizingMaskIntoConstraints(true)
vwCard.layer.borderColor = UIColor.whiteColor().CGColor
}