Я пытаюсь сделать подкласс UIView, который показывает водопроводный кран с каплей, которая продолжает расти, а затем падает.Чем больше экспериментов я выполняю с разными частями, тем больше я запутываюсь.
Я создал две графики:
Я создал класс UIView:
class ValvebeatView: UIView {
var faucet = CALayer()
var drip = CALayer()
func _init() {
self.faucet.contents = #imageLiteral(resourceName: "faucet").cgImage
self.drip.contents = #imageLiteral(resourceName: "droplet").cgImage
self.layer.insertSublayer(self.drip, above: nil)
self.layer.insertSublayer(self.faucet, above: self.drip)
}
override init(frame: CGRect) {
super.init(frame: frame)
self._init()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self._init()
}
override func layoutSubviews() {
super.layoutSubviews()
self.faucet.frame = self.bounds
self.drip.frame = self.bounds
}
func startDrop() {
}
}
Если я добавлю это представление в свое приложение, я получу что-то похожее на это:
что в самый раз.Но как только я пытаюсь поэкспериментировать с изменением внешнего вида капли, ничего не работает, как ожидалось.То, что я пробовал / усвоил до сих пор:
- Установка
drip.contentScale
, похоже, ничего не дает.Документация делает его звучащим так, будто это просто подсказка? - Я играл с
contentsRect
, что, кажется, меняет его, но после прочтения документов, кажется, это указывает на то, что он определяет подраздел перетаскиваемого изображения, которыйПоказано.Я хочу показать все капли, я просто хочу начать с малого, заставить его набухать, а затем переключиться на перевод его вниз. - Различные варианты преобразования (масштабирование, затем перевод) кажутся правильным способом сделать что-то,Но это также не дает правильного результата.Например, если я установил жест касания
self.valvebeatView.drip.transform = CATransform3DMakeScale(0.1, 0.1, 1)
, он временно увеличится в 10 раз, а затем вернется к исходному размеру.Но что еще страннее, если я вместо этого self.valvebeatView.drip.transform = CATransform3DMakeScale(10.0, 10.0, 1)
сделаю то же самое?!?!?Почему он, по крайней мере, не сжался, а затем вернулся к исходной форме?
Я задавался вопросом, так ли это, потому что моя гравитация установлена по умолчанию (то есть с изменением размера).Но когда я изменяю это на центр, оригинальная капля выходит за рамки размера.
Суть моего вопроса в том, какие хуки (трансформировать, позиционировать и т. Д.) Я хочу использовать для анимации растущей капли измаленький масштаб до нормы, а затем падает вниз.