Я пытаюсь понять, почему мой подзаголовок не получает штрихи.UIView subview не получает штрихи
Ниже приведен gif, показывающий поведение, с которым я сталкиваюсь: когда я нажимаю голубую кнопку справа, ничего не происходит (предположение о том, что на левом фоне должно измениться цвет). Когда я нажимаю зеленую кнопку слева, он правильно получает событие касания, срабатывает прилагаемое действие TouchDown и меняется цвет представления.
Это «приложение», очевидно, не является реальным приложением и просто предназначены для иллюстрации поведения Я сталкиваюсь. Действительно, то, что мне нужно, - это научиться реализовывать обычный шаблон «выпадающего меню», который вы видите во многих приложениях; обычно с сопровождающей кнопкой гамбургера.
Во многих из этих приложений, похоже, основное содержимое приложения перемещается в сторону, чтобы открыть меню, «скрываясь» под приложением, так или иначе. Я пытаюсь воспроизвести такое же поведение здесь.
Я вставляю здесь свой код ViewController. Код, который вы видите ниже, - это все, что у меня есть.
import UIKit
class ViewController: UIViewController {
var originalX : CGFloat!
var originalY : CGFloat!
var containerView = UIView()
var button : UIButton!
var button2 : UIButton!
override func viewDidLoad() {
super.viewDidLoad()
originalX = self.view.frame.origin.x
originalY = self.view.frame.origin.y
button = UIButton(frame: CGRectMake(200, 25, 100, 100))
button.backgroundColor = UIColor.greenColor()
button.addTarget(self, action: "foo", forControlEvents: .TouchDown)
view.addSubview(button)
containerView.frame = CGRectMake(self.view.frame.width, originalY, 150, self.view.frame.height)
containerView.userInteractionEnabled = true
containerView.backgroundColor = UIColor.magentaColor()
containerView.clipsToBounds = false
button2 = UIButton(frame: CGRectMake(25, 25, 100, 100))
button2.backgroundColor = UIColor.cyanColor()
button2.addTarget(self, action: "bar", forControlEvents: .TouchDown)
view.addSubview(containerView)
containerView.addSubview(button2)
}
@IBAction func left() {
UIView.animateWithDuration(0.3) {
self.view.frame = CGRectMake(self.originalX - 150, self.originalY, self.view.frame.width, self.view.frame.height)
}
}
@IBAction func right() {
UIView.animateWithDuration(0.3) {
self.view.frame = CGRectMake(self.originalX, self.originalY, self.view.frame.width, self.view.frame.height)
}
}
func foo() {
UIView.animateWithDuration(1.0) {
self.view.backgroundColor = UIColor.redColor()
}
}
func bar() {
UIView.animateWithDuration(1.0) {
self.view.backgroundColor = UIColor.blueColor()
}
}
}
У меня нет конкретного ответа для вас, но я бы посмотрел на то, как вы анимируете объекты с помощью «рамки», это вероятно, лучше анимировать либо ограничения, либо преобразование. Анимация фрейма может делать сумасшедшие вещи, и нетрудно просто оживить преобразование. – Loxx