1.按钮操作

目的:通过按钮来操作图片的位置,旋转以及图片大小,点击图片形变恢复到原来状态(Xcode 6 beat3)

效果展示:


1.界面搭建

新建一个工程,设置手机型号为iphone5s,将需要的素材导入到工程里的Supporting Files文件下。打开Main.storyboard文件,此时View Controller界面非手机正常比例,此时Use Auto Layout 和Use Size Classes 是选勾状态,去掉选勾就可以了。


然后将Button控件拖进该界面,调整好位置。设置Button属性:将其Type设置为Custom,删除Default Title里面的Button。然后设置合适的Tag,每个控件的Tag尽量设置的不一样。在Default状态下Background 设置成我们素材里面对应normal图片,然后设置高亮状态下得Background。




然后连线,按住Ctrl键,点击控件拖到viewController.h中



根据属性设置,需要监听它则属性选项Action要要改变其属性则选择Outlet,



2.代码实现

// 实现上下左右移动
- (IBAction)run:(id)sender {
    
    // 动画开始地方
    [UIView beginAnimations:nil context:nil];
    
    // 动画时间设置
    [UIView setAnimationDuration:0.5 ];
    
    // 取出图片的frame属性
    CGRect tempFrame = _btn.frame;

    
    // 判断点击的按钮 此处tag不可以使用点语法
    NSInteger tag = [sender tag];
    
    switch (tag) {
        case 1:
            tempFrame.origin.y -= kDelat;
            break;
        case 2:
            tempFrame.origin.x += kDelat;
            break;
        case 3:
            tempFrame.origin.y += kDelat;
            break;
        case 4:
            tempFrame.origin.x -= kDelat;
            break;
            
        default:
            break;
    }
    _btn.frame = tempFrame;

    // 动画结束位置
    [UIView commitAnimations];
    
}
// 实现旋转
- (IBAction)rotate:(id)sender {
 
    // 动画开始地方
    [UIView beginAnimations:nil context:nil];
    
    // 动画时间设置
    [UIView setAnimationDuration:0.5 ];

    // 判断点击的按钮 此处tag不可以使用点语法
    NSInteger tag = [sender tag];

    // 将_btn.transform里面角度属性在其原来的值基础上加上或者PI/4
    if(tag == 5) _btn.transform = CGAffineTransformRotate(_btn.transform, -M_PI_4);
    else if (tag == 6)  _btn.transform = CGAffineTransformRotate(_btn.transform, +M_PI_4);
        
    
    [UIView commitAnimations];
  }
// 实现缩放
- (IBAction)plusmin:(id)sender {
    // 动画开始地方
    [UIView beginAnimations:nil context:nil];
    
    // 动画时间设置
    [UIView setAnimationDuration:0.5];
    
    // 判断点击的按钮 此处tag不可以使用点语法
    
    NSInteger tag = [sender tag];
   // 将_btn.transform的x/y属性扩大为原来的1.2倍或者缩小0.8倍
    if(tag == 7) _btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2);
        else if (tag == 8)  _btn.transform = CGAffineTransformScale(_btn.transform, 0.8, 0.8);
    
    
    [UIView commitAnimations];
}
// 实现恢复原图大小
- (IBAction)recovery:(id)sender {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.3];
    
    // 将图片属性恢复到初始化状态
    _btn.transform = CGAffineTransformIdentity;
    
    [UIView commitAnimations];
}

3.总结

第一篇UI学习笔记,所以记录的较为详细。Storyboard在学习中是一个很好的辅助工具,UI中的控件属性在此处均可以设置。函数中用到的控制形变的函数:

将图片的尺寸在原来的基础上宽度扩大为原来的sx倍,高度扩大为原来的sy倍: 

CGAffineTransform CGAffineTransformScale(CGAffineTransform t,  CGFloat sx, CGFloat sy);

将图片的角度在原来的基础上旋转angle:

CGAffineTransform CGAffineTransformRotate(CGAffineTransform t,  CGFloat angle)

修改位置的函数:通过修改frame的值来修改图片的位置

CGRect tempFrame = _btn.frame;
// 判断点击的按钮 此处tag不可以使用点语法
#define kDelat 50
    NSInteger tag = [sender tag];
    
    switch (tag) {
        case 1:
            tempFrame.origin.y -= kDelat;
            break;
        case 2:
            tempFrame.origin.x += kDelat;
            break;
        case 3:
            tempFrame.origin.y += kDelat;
            break;
        case 4:
            tempFrame.origin.x -= kDelat;
            break;
            
        default:
            break;
    }
    _btn.frame = tempFrame;

动画效果代码:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5 ];
/ *    代码   */
  [UIView commitAnimations];
   将图片属性恢复到初始化状态函数:
    _btn.transform = CGAffineTransformIdentity;

(在调试的时候,作者发现一个小小的bug,当图片旋转角度为±PI/4、±3*(PI/4)的时候,点击方向键,图片会突然消失。现在能力有限,此问题留给以后处理。)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET Core 是一种跨平台的开发框架,它提供了丰富的功能和工具,可以用来构建各种类型的应用程序,包括网站和Web应用程序。 在.NET Core中实现按钮权限通常需要以下步骤: 1. 定义权限:首先,需要确定每个按钮对应的权限。可以使用角色或特定用户的权限进行定义。例如,可以为管理员角色定义一个"编辑"按钮的权限。 2. 验证权限:在视图文件中,可以使用身份验证的方式来验证用户是否具有相应的权限。通过在按钮上添加判断,判断当前用户是否具有对应按钮的权限。 3. 权限管理:在后端代码中,需要实现一个权限管理系统,以便在用户登录时获取其角色或权限信息,并将其保存在用户的标识中。这样,在需要验证权限的地方,可以轻松地从用户标识中获取用户的权限信息进行验证。 4. 前端控制逻辑:在前端代码中,可以使用条件判断来隐藏或显示按钮,以反映用户的权限。例如,当用户没有"编辑"按钮的权限时,可以使用CSS属性将该按钮隐藏。 5. API权限验证:如果在后端使用API创建按钮,则需要在API中实现权限验证。当接收到请求时,可以在API中验证用户的权限,并根据结果决定是否允许进行相应操作。 总结起来,实现.NET Core中的按钮权限需要在后端和前端代码中实现权限管理和验证逻辑,并将用户的权限信息保存在用户的标识中。在前端代码中,根据用户的权限信息来控制按钮的显示和隐藏。这样可以确保只有具备相应权限的用户才能够操作相应的按钮
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值