动画的button(按下时缩小,松开时恢复)

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end
#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    self.window.rootViewController = [[RootViewController alloc] init];

    [self.window makeKeyAndVisible];
    return YES;
}

@end
#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end
#import "RootViewController.h"
@interface RootViewController ()
{
    CGFloat buttonScale;//比例
}
@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //初始化button
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    buttonScale = 1.0;
    button.frame = CGRectMake(100, 100, 120, 60);
    [button setTitle:@"按钮" forState:0];
    [button setBackgroundImage:[UIImage imageNamed:@"button"] forState:0];
    [button addTarget:self action:@selector(buttonDownAction:) forControlEvents:UIControlEventTouchDown];
    [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside];
    [self.view addSubview:button];
}
/**
 *  按钮按下时,执行的方法
 */
- (void)buttonDownAction:(UIButton*)sender{
    CGFloat scale = buttonScale < 1.0 ? 1.0 : 0.9;
    //变小
    [UIView animateWithDuration:0.25 animations:^{
        sender.transform = CGAffineTransformMakeScale(scale, scale);
    }];
    NSLog(@"变小");
}
/**
 *  松开按钮时,执行的方法
 */
- (void)buttonAction:(UIButton*)sender{
    //恢复原来的尺寸
    [UIView animateWithDuration:0.25 animations:^{
        sender.transform = CGAffineTransformMakeScale(1.0, 1.0);
    } completion:^(BOOL finished) {
        //在此执行相应操作
        NSLog(@"恢复");
    }];
}

@end
时间: 2024-10-21 06:46:14

动画的button(按下时缩小,松开时恢复)的相关文章

打造极致Material Design动画风格Button

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42471119 --学之开源,用于开源:初学者的心态,与君共勉! ================================

Android 动画详解之属性动画(Property Animation)(下)

Hello,大家好,最近好长时间没有写博客了,因为我决定辞职了. 废话不多说,我们还是来看属性动画在上一篇Android 动画详解之属性动画(Property Animation)中我们简单的介绍了一下属性动画的用法,其实属性动画还有更多有趣的用法. 1,在xml中使用 在eclipse中我们右键新建xml可以选择新建属性动画,如图 我们选择objectAnimator,然后我们就会看到熟悉的一幕 然后我们用智能提示就可以看到更熟悉的 没错,这下我们应该知道怎么用xml布局来写属性动画了吧 <s

onkeyup 事件会在键盘按键被松开时发生

定义和用法 onkeyup 事件会在键盘按键被松开时发生. 语法 onkeyup="SomeJavaScriptCode" 参数 描述 SomeJavaScriptCode 必需.规定该事件发生时执行的 JavaScript. 支持该事件的 HTML 标签: <a>, <acronym>, <address>, <area>, <b>, <bdo>, <big>, <blockquote>,

Linux 下执行*.run文件时注意事项

一些学员反映,在linux环境下执行*.run文件时不能成功,现把问题总结如下: 1.可能是权限不够,这时候很好办,赋予权限即可: 方法一:chmod +x *.run,然后./*.run; 方法二:chmod 777 *.run,然后./*.run; 2.可能是linux和安装的*.run支持的操作系统位数不同,查看对应支持的版本即可: 1)查看linux系统的版本uname -a: 2)查看*.run文件支持的版本:file *.run; 3)如果linux是64位,*.run是32位,最好

转载:Linux下执行SVN命令时提示错误:Valid UTF-8 data

在Linux下执行svn add *时出现如下错误: svn:  Valid UTF-8  data(hex: 4b)followed by invalid UTF-8 sequence(hex:  fc 63 68  65) 出现这个错误是因为svn库里有文件的名字不是utf-8编码的,这种情况对于中文来说很常见.比如在自己的windows上建了一个中文名字的文件,就会使这种情况. 几经周折,才找到解决办法: 首先,执行命令: ls * | file -/dev/stdin:  ISO-885

清除在Windows下访问共享文件夹时的登录信息

清除在Windows下访问共享文件夹时的登录信息 在实际工作中,经常需要访问局域网内其他机子上的共享文件夹,例如\\192.168.1.100\d$ , 首次访问时,需要输入用户名和密码才可以进入,即使没有勾选”保存密码”选项,下次登录时也会直接进入,虽然这个功能方便实用,但是当需要切换到另外 一个账号时,就不知所措了. 那么:如何才能清除本机Windows环境下访问这些共享文件夹时的登录信息(用户名和密码)呢? 下面给大家介绍一下. 一.命令行(cmd窗口)操作 当在命令提示窗口输入net u

windows下dbca删除OracleserviceXXX时遇到错误:dim-00014 Cannot open the Windows NT Service Control Manager

windows下dbca删除OracleserviceXXX时遇到错误:dim-00014 Cannot open the Windows NT Service Control Manager  O/S-Error: (OS 5) Access is denied. 截图如下: 经过查询mos,发现如下文章与该报错匹配: How To Create a Service using oradim in Windows Vista (文档 ID 432713.1) 下面截取该mos文章的内容: Ap

想请问下PDF双面打印时(打印机自动双面打印)为什么反面那页的内容是倒过来的,应该怎么设置?

用foxit reader 打印pdf 直接设置为双面打印并且一张2页打印,发现正反面刚好倒着来的,其实说的正反面倒着是从左右翻的角度来讲的,如果上下翻会发现刚好是这个顺序的,这个是要在双面打印设置里头去设置那个长边和短边的方向.在foxit reader 这里面 选择打印在弹出来的打印属性框中那个不是有个选择打印机的框,其后面有个属性按钮,点击这个属性按钮进去在这里可以设置双面打印, 设置完双面打印之后其下方刚好有个双面打印设置按钮, 单击这个双面打印设置进去就可以进行长边和短边的方向设置了.

VMware下安装Ubuntu18.04时vmware tools安装问题

在VMware下安装Ubuntu18.04时vmware tools关键步骤: 1.快捷键Ctrl+Alt+T,启动命令框,然后切换到root用户(切换命令为:sudo su,回车然后会提示你输入当前登录用户的密码,输入成功后即可进入root用户): 2.然后我们以root用户进入到刚刚提取到的vmware-tools-distrib文件夹下,然后输入命令:./vmware-install.pl,(命令框下的操作跟windows powershell下的类似,支持tab键自动补齐,自动切换符合条

给button增加下划线

如何给button增加下划线简单版 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000; background-color: #fffcea } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #cf8724; background-color: #fffcea } p.p3 { margin: 0.0px 0.0