gpt4 book ai didi

objective-c - 在不明确定义 CGRect 的情况下将帧缩小 80%

转载 作者:行者123 更新时间:2023-12-01 17:59:52 25 4
gpt4 key购买 nike

我正在尝试为按钮设置动画。该按钮将以 0 的高度和宽度开始,并扩展到其预期大小的 100%。然后它将缩小到其大小的 80%,然后再次恢复到 100%。

有没有办法做到这一点而不必为每个位置显式计算 CGRect ?问题是,当 80% 时,框架与 100% 时框架的位置不完全对齐。我必须手动计算框架的 x 和 y 位置,这很耗时,因为我正在为很多按钮执行此操作。

这是我目前正在尝试做的事情:

    CGRect smallPlay = CGRectMake(PlayButton.frame.origin.x + 94, PlayButton.frame.origin.y + 23, 0, 0);
CGRect almostFullPlay = CGRectMake(40, 170, 160, 30);

[UIView animateWithDuration:0.3
delay:0
options: UIViewAnimationCurveEaseOut
animations:^{

PlayButton.frame = smallPlay;
PlayButton.frame = CGRectMake(50, 178, 187, 45);

}
completion:^(BOOL finished){
[UIView animateWithDuration:0.2
delay:0
options:UIViewAnimationCurveEaseOut
animations:^{

PlayButton.frame = almostFullPlay;
PlayButton.frame = CGRectMake(50, 178,187, 45);

} completion:^(BOOL finished){
NSLog(@"Done!");
}
];
}];

编辑:我意识到我可以编写一个函数来计算 80% 的帧,但我想知道是否有更好的方法来做到这一点,不需要我写任何额外的东西。

最佳答案

看起来您只是想暂时操纵按钮的外观。如果是这样的话,而不是转换它的frame , 尝试将其 transform !这是一个起点。如果您需要更多了解,请告诉我。

[UIView
animateWithDuration: ...
delay: ...
options: UIViewAnimationCurveEaseOut
animations: ^ {
PlayButton.transform = CGAffineTransformMakeScale(0.8, 0.8);
}];

要将按钮恢复到其原始变换(称为“恒等变换”),请将其设置为 transform属性(property)给 CGAffineTransformIdentity .

一旦你弄清楚了,请继续阅读 CGAffineTransform ( NSAffineTransform 的 Quartz 表亲, CATransform3D 的 2D 叔叔。)

关于objective-c - 在不明确定义 CGRect 的情况下将帧缩小 80%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com