IOS开发基础—按钮(button)基本操作
来源:互联网 发布:淘宝买家怎么修改中评 编辑:程序博客网 时间:2024/05/29 15:20
作者声明
因个人能力问题,文中不免会有错误之处,欢迎各位读者交流,批评,指正!
摘要
本文通过一个实例学习按钮的基本操作:为一个button设置一个背景图片,另外设置八个按钮,分别控制该button的空间平移和缩放、旋转变换。
用到的按钮属性总结
- frame
1.1 表示控件的位置和尺寸(以父控件的左上角为左边远点(0,0))。
1.2 修改这个属性,可以调整控件的位置和尺寸。 - center
2.1 表示控件的中点(以父控件的左上角为坐标原点)。
2.2 修改这个属性,只能调整控件的尺寸。 - bounds
3.1 表示控件的位置和尺寸(以自己的左上角为坐标原点,位置永远是(0.0))
3.2 修改这个属性,只能调整控件的尺寸。 - tag
4.1 表示控件的标识符.
4.2 通过不同的标识符可以区分不同的控件。 - transform
5.1 表示控件的形变状态,常用的有旋转角度,缩放比例)
5.2 修改方法包括绝对修改和相对修改。
实例
以下为实例:
Main.stroryboard
(待完善)
viewController.h 文件代码
#import <UIKit/UIKit.h>@interface ViewController : UIViewController// 定义成员but。@property (weak, nonatomic) IBOutlet UIButton *but;// 声明移动方法。- (IBAction)move:(id)sender;// 声明缩放方法。- (IBAction)scale:(id)sender;// 声明旋转方法。- (IBAction)rotate:(id)sender;@end
viewController.m文件代码
//// ViewController.m// 按钮操作练习//// Created by dqw on 15/5/5.// Copyright (c) 2015年 itcast. All rights reserved.//#import "ViewController.h"// 方便更改。#define kDelta 100// 这个是类的延展,可以添加成员变量和方法。@interface ViewController ()@end@implementation ViewController#pragma mark 加载#pragma mark 定义block 实现代码重构// 此处要注意block定义的时候的类型,该方法没有声明,只有实现,应该是私有方法(不确定)。关于私有方法:此处的私有方法可能是指只能在本.m文件中使用的方法。- (void)butClickWithBlock:(void(^)())block{ [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; // 调用的时候要带括号的。 block(); [UIView commitAnimations]; }#pragma mark 上下左右移动- (IBAction)move:(id)sender{/* // 这是当前viewcontroller的一个方法,所以要用self来调用它,不仅仅是代码替换,而是方法调用。 [self butClickWithBlock:^{ // 不能直接对对象(viewcontroller-view-_but)的结构题(frame-origin)里的成员(y 或者x)直接赋值,所以要先讲结构体取出,修改其成员值,然后再将其赋值给对象的结构体。 CGRect frame = _but.frame; // sender.tag也可。 int tag = [sender tag]; switch (tag) { case 1: frame.origin.y -= kDelta; break; case 2: frame.origin.x -= kDelta; break; case 3: frame.origin.y += kDelta; break; case 4: frame.origin.x += kDelta; break; default: break; } _but.frame = frame; }];*/#pragma mark 通过center来移动按钮。// 通过center来移动按钮 [self butClickWithBlock:^{ // 不能直接对对象(viewcontroller-view-_but)的结构体(center)里的成员(y 或者x)直接赋值,所以要先将结构体取出,修改其成员值,然后再将其赋值给对象的结构体。 // 需要注意center是CGPoint类型。 CGPoint center = _but.center; // sender.tag也可。 int tag = [sender tag]; switch (tag) { case 1: center.y -= kDelta; break; case 2: center.x -= kDelta; break; case 3: center.y += kDelta; break; case 4: center.x += kDelta; break; default: break; } _but.center = center; }];}#pragma mark 缩放。- (IBAction)scale:(id)sender { [self butClickWithBlock:^{ // 三目运算的优先级高于赋值运算,注意这些值的类型CGfloat。 CGFloat scalexy = [sender tag] == 5 ? 1.2 : 0.8; // CGAffineTransformMakeScale(<#CGFloat sx#>, <#CGFloat sy#>),这个函数是绝对缩放,下面的是相对缩放。 _but.transform = CGAffineTransformScale(_but.transform, scalexy, scalexy); }];}#pragma mark 旋转。- (IBAction)rotate:(id)sender { [self butClickWithBlock:^{ CGFloat angel = [sender tag] == 7 ? -M_PI_4 : M_PI_4; _but.transform = CGAffineTransformRotate(_but.transform, angel); }]; // 注意此结束符号。}// 让按钮恢复到初始状态。- (IBAction)reset:(UIButton *)sender { [self butClickWithBlock:^{ // 下面的xxident为一个矩阵常量,对角矩阵。 self.but.transform = CGAffineTransformIdentity; }]; }@end
重点 难点 注意点
- 利用block提取共同的代码。
- 所以的方法都是viewController的类方法或者对象方法。
- 不能给对象的结构体中的成员直接赋值。
- tag center的使用
- transform里面的绝对变换和相对变换。
- 将按钮恢复到初始化状态,CGAffineTransformIdentity为一个常量,the identity transform :恒等变换,其值为单位对角矩阵:[ 1 0 0]
[ 0 1 0]
[ 0 0 1 ]
待完善的内容
- 了解更多的属性和方法
0 0
- IOS开发基础—按钮(button)基本操作
- iOS开发UI篇—Button基础
- iOS开发UI篇—Button基础
- iOS开发UI篇—Button基础
- iOS开发UI基础—01Button
- iOS开发UI篇—Button基础
- IOS开发UI—Button基础
- Android开发 之 基本按钮Button
- ios开发学习--按钮(Button)效果源码分享
- iOS开发 UI Button基础
- IOS开发之按钮控件Button详解
- IOS学习之iOS开发UI篇—Button基础
- iOS开发基础控件--按钮(UIButton)
- iOS开发之UI基础--Button基础
- IOS入门学习(三):基本交互功能之button按钮
- iOS开发 - UIButton 按钮操作
- iOS开发——Xcode基本操作
- Android开发基础之Button按钮的简单用法
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法
- 在Tomcat中部署Solr5.1
- 简单的L脚本语言
- 百度地图 js使用
- 使用终端编译和运行OC程序
- IOS开发基础—按钮(button)基本操作
- linux 命令之strings
- 排序算法——归并算法
- golang xml 递归嵌套解析
- Android ExpandableListView 仿QQ列表页面,title永远在上面,带下拉刷新,上拉加载。
- CTB-LOCKER敲诈者病毒下载器脱壳之样本1
- 1013. Battle Over Cities (25)
- 文字自右向左滚动代码
- Android学习之文件管理器