Ios Swift:设置按钮参数动画(插图、字体大小等)

Ios Swift:设置按钮参数动画(插图、字体大小等),ios,swift,animation,transform,Ios,Swift,Animation,Transform,我正在尝试访问和动画我的按钮不同的参数。 默认情况下,它们是在Interface Builder中设置的,具有设置的字体大小、对齐方式和插入方式,我希望在触发按钮时访问这些参数并使用动画对其进行更改:当未单击我的按钮时(默认情况下),其标题的字体大小较小,在左下角对齐,并带有一些标题插入;当我单击它时,我希望字体更大,将插入设置为0,对齐设置为中心(水平和垂直),并将此过渡设置为动画。 如何构建函数来访问这些参数并设置其动画 @IBOutlet weak var circlePad: UIBut

我正在尝试访问和动画我的按钮不同的参数。 默认情况下,它们是在Interface Builder中设置的,具有设置的字体大小、对齐方式和插入方式,我希望在触发按钮时访问这些参数并使用动画对其进行更改:当未单击我的按钮时(默认情况下),其标题的字体大小较小,在左下角对齐,并带有一些标题插入;当我单击它时,我希望字体更大,将插入设置为0,对齐设置为中心(水平和垂直),并将此过渡设置为动画。
如何构建函数来访问这些参数并设置其动画

@IBOutlet weak var circlePad: UIButton!
@IBAction func padPressed(_ sender: UIButton) {
        animatePadTitle(circlePad)
    }

func animatePadTitle(button: UIButton) {
        // not sure how to tackle this here, do I use something like button.transform = CGAffineTransform ?
    }
谢谢

编辑:我尝试了更多的修改参数,并将我的函数“升级”为:

func animatePadTitle(button: UIButton, insetBottom: Int, insetLeft: Int, fontSize: CGFloat, alignVert: UIControl.ContentVerticalAlignment, alignHor: UIControl.ContentHorizontalAlignment) {
       // button.transform = CGAffineTransform
        button.titleEdgeInsets.bottom = CGFloat(insetBottom)
        button.titleEdgeInsets.left = CGFloat(insetLeft)
        button.contentVerticalAlignment = alignVert
        button.contentHorizontalAlignment = alignHor
        button.titleLabel?.font = UIFont(name: fontName, size: fontSize)
        
    }
现在的问题是如何在每次单击按钮时设置这些参数之间的转换动画?
我确实设置了一个布尔值来检查键盘是否点亮,在一个if条件下,我使用不同的参数编写了我的函数,并且发生了变化,只是它们很突然,我希望它们更平滑。

您可以使用cGraffeTransform scale函数来放大或缩小按钮的整体边界,包括标题

要放大,请使用>1, 要缩小使用范围,请使用<1

 @objc func animatePadTitle() {
   UIView.animate(withDuration: 0.15,
               animations: { [weak self] in
                guard let self = self else { return }
                self.circlePad.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
               },
               completion: { _ in
                UIView.animate(withDuration: 0.15) {
                  self.circlePad.transform = CGAffineTransform.identity
                }
             })
            }

谢谢Prateesh,但在我的例子中,它有点复杂:我的按钮有一个背景图像,默认情况下,我使标题显示在背景图像的左下角,字体很小,然后当我单击按钮时,标题会放大并居中,插入部分被删除。我确实设置了插图,因为当点击按钮时,我的背景图像也会发生变化,我为它创建了一个neumorphic设计,使其与我视图的背景融合,我需要为这两幅图像的标题添加一些插图,否则左下对齐似乎超出了框架所以如果我缩放整个按钮,它还可以缩放我的背景图像;此外,我的视图控制器中还有一个按钮,它可以在我的键盘按钮上触发图像而不是文本;所以,如果我按照你的方式来做,我想当图像被触发时,它们也会被缩放。因此,我认为在我的例子中,由于我的按钮“复杂”,如果我缩放整个帧,它会把一切搞得一团糟,我希望有一种方法可以平滑地为我的插图、字体大小和对齐设置值的过渡设置动画。希望您尝试在动画块中设置插图。那有用吗?