回答
呼叫
button.transform = CGAffineTransformMakeScale(1.1,1.1);
在按下按钮的处理程序。
或者,如果你想与动画缩放:
[UIView beginAnimations:@"ScaleButton" context:NULL];
[UIView setAnimationDuration: 0.5f];
button.transform = CGAffineTransformMakeScale(1.1,1.1);
[UIView commitAnimations];
要完成答案,按钮缩放(和复位)可以被放置到方法,像这样:
// Scale up on button press
- (void) buttonPress:(UIButton*)button {
button.transform = CGAffineTransformMakeScale(1.1, 1.1);
// Do something else
}
// Scale down on button release
- (void) buttonRelease:(UIButton*)button {
button.transform = CGAffineTransformMakeScale(1.0, 1.0);
// Do something else
}
并与连接按钮的事件,像这样:
[btn addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpOutside];
注1:将CGAffineTransformMakeScale值设置为1.0不会使它们保持其更改的值(即,它不会将1.1乘以1.0),而是将其设置回对象的原始比例。
注意2:不要忘记选择器中的冒号:
,因为它允许将发送者作为参数传递给接收方法。在这种情况下,我们的方法接收一个UIButton,并将在接口(.h文件)中声明。
别忘了'UIControlEventTouchCancel'和'UIControlEventTouchDragExit' – Tim 2013-01-09 08:07:29
super.Thank you so much ..它完美 – 2014-03-18 07:50:06
这是我用
-(IBAction)heartButtonTapped:(UIButton*)sender {
[sender setSelected:!sender.isSelected];
[UIView animateWithDuration:0.6 delay:0.0 options:UIViewAnimationOptionAutoreverse animations:^{
sender.transform = CGAffineTransformMakeScale(1.5,1.5);
} completion:^(BOOL finished) {
sender.transform = CGAffineTransformMakeScale(1,1);
}];
}
简单的解决方法,谢谢,发现了一个小问题:当autoreverse动画完成时,按钮突然从1.5x调整为1x。可以稍微修改来避免,单独发布完整的代码。 – Thiru 2015-02-12 09:37:11
从@ ibm123的稍加修改代码,避免突然调整大小的问题。
- (IBAction) buttonTapAction:(UIButton *) sender {
[self animatePressedDown:sender duration:0.6 zoom:1.5];
}
- (void)animatePressedDown:(UIButton *) sender duration:(double) t zoom:(double) zoomX {
[UIView animateWithDuration:t delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
sender.transform = CGAffineTransformMakeScale(zoomX,zoomX);
} completion:^(BOOL finished) {
[UIView animateWithDuration:t delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
sender.transform = CGAffineTransformMakeScale(1,1);
} completion:nil];
}];
}
斯威夫特:
button.transform = CGAffineTransform.init(scaleX: 1.0, y: 1.0)
- 1. 按比例缩放整个UIView
- 2. UICustom按钮缩放比例错误
- 3. 将SVG按比例缩放到PNG
- 4. AS3按比例缩放外部图像
- 5. UVIews缩放比例UIScrollview
- 6. rmagick自动缩放比例
- 7. 比例图像缩放
- 8. Maxscript中的缩放比例
- 9. 如何按比例(尊重宽高比)缩放矩形?
- 10. 按比例缩放按钮而不会丢失3D效果
- 11. 比UIButton更快吗?
- 12. TDBChart可能是轴的指数缩放比例吗?
- 13. UIButton - 移动和缩放
- 14. 按比例缩放所有图像以适应容器
- 15. 垂直响应设计:按比例缩放图像
- 16. Bootstrap传送带图像不能按比例缩放
- 17. 按照相对比例缩放圆圈大小维恩图
- 18. 如何按比例将图像缩放到最大宽度?
- 19. Android:按钮上的奇怪缩放比例topDrawable
- 20. TextView:缩小比例并按顺序动画放大
- 21. 如何按比例缩放此flexbox瓷砖网格
- 22. 按比例放大缩小(ctrl + - )整个网页纯css
- 23. 控制缩放比例使用外部按钮
- 24. 按比例缩放SurfaceView更改插值方法
- 25. 按比例缩放到动画片段大小
- 26. 缩放比例按钮保持背景图像
- 27. 如何裁剪我的ImageView并按比例缩放它?
- 28. 如何按载波比例缩放图像
- 29. 在Android上保持画布比例和缩放比例
- 30. 容器的变换比例和子变换的缩放比例
好凉,我怎么能结合这与触摸事件? – Tronic 2010-09-08 19:48:41
对不起,不明白你的意思究竟是什么意思...... – Vladimir 2010-09-08 20:01:26
我的意思是,当按下按钮时,我怎样才能将这段代码与事件结合起来。 – Tronic 2010-09-08 21:55:24