Но все равно я не могу представить ситуацию, в которой мне нужно будет обратиться к этой функции
Тогда представьте себе следующее: кнопка, которая кажется немного сужающейся в ответ на то, чтобы бытьнажмите в качестве обратной связи с пользователем, чтобы вернуться к своему нормальному размеру, когда палец пользователя больше не находится на кнопке.Как бы вы это сделали?Вот элегантный способ:
extension CGSize {
func sizeByDelta(dw:CGFloat, dh:CGFloat) -> CGSize {
return CGSize(width:self.width + dw, height:self.height + dh)
}
}
class MyShrinkingButton: UIButton {
override func backgroundRect(forBounds bounds: CGRect) -> CGRect {
var result = super.backgroundRect(forBounds:bounds)
if self.isHighlighted {
result = result.insetBy(dx: 3, dy: 3)
}
return result
}
override var intrinsicContentSize : CGSize {
return super.intrinsicContentSize.sizeByDelta(dw:25, dh: 20)
}
}
Эффект тонкий, но живой и четкий.Вот кнопка в ее нормальном состоянии и в ее выделенном состоянии.