Скопируйте файлы bin в Физическое местоположение файла на событии Post Build в VS2010

В iOS 10 вам не нужно создавать CAAction, он просто создает CABasicAnimation и предоставляет это в вашем действии (для слоя :, для ключа :) -> CAAction? (см. пример Swift):

private var currentBoundsAnimation: CABasicAnimation? {
    return layer.animation(forKey: "bounds.size") as? CABasicAnimation ?? layer.animation(forKey: "bounds") as? CABasicAnimation
}

override public var bounds: CGRect {
    didSet {
        layer.cornerRadius = min(bounds.width, bounds.height) / 2
    }
}

override public func action(for layer: CALayer, forKey event: String) -> CAAction? {
    if(event == "cornerRadius"), let boundsAnimation = currentBoundsAnimation {
        let animation = CABasicAnimation(keyPath: "cornerRadius")
        animation.duration = boundsAnimation.duration
        animation.timingFunction = boundsAnimation.timingFunction
        return animation
    }

    return super.action(for: layer, forKey: event)
}

Вместо переопределения свойства bounds вы также можете переопределить layoutSubviews:

override func layoutSubviews() {
    super.layoutSubviews()
    layer.cornerRadius = min(bounds.width, bounds.height) / 2
}

Это работает магически, потому что CABasicAnimation указывает на отсутствие и значениям из уровня модели и представления. Чтобы правильно настроить время, вам нужно личное свойство currentBoundsAnimation, чтобы получить текущие анимации («границы» для iPad и «bounds.size» для iPhone), которые добавляются при ротации устройства.

28
задан Cody Gray 12 January 2011 в 01:05
поделиться