iOS UI基础-2.0按钮操作与形变
2015-08-19 21:14 jiangys 阅读(356) 评论(0) 编辑 收藏 举报按钮状态
1.normal:默认状态 Default
对应的枚举常量:UIControlStateNormal
2.highlighted(高亮状态)
按钮被按下去的时候(未松开)
对应的枚举常量:UIControlStateHighlighted
3.disabled(失效状态,不可用状态)
如果enable属性为NO,就是处于disabled状态,代表按钮不可被点击
对应的枚举常量:UIControlStateDisabled
上下左右操作,思路:
1.给每个操作增加一个Tag值
2.根据tag值,来判断点击的是那个button
/** frame属性,通常用于实例化控件,指定初始位置 如果需要改变控件位置,可以使用center属性 如果需要改变控件大小,可以使用bounds属性 */ - (IBAction)move:(UIButton *)button { // 提示,也可以通过center修改位置,可以课后练习 CGPoint center = self.iconButton.center; // 2. 根据按钮的类型tag,判断移动的方向,再修改结构体的成员 // magic number魔法数字 switch (button.tag) { case kMovingDirTop: // 上 center.y -= 10.0f; break; case kMovingDirBottom: // 下 center.y += 10.0f; break; case kMovingDirLeft: // 左 center.x -= 10.0f; break; case kMovingDirRight: // 右 center.x += 10.0f; break; } // 3. 重新为对象的结构体属性赋值 self.iconButton.center = center; NSLog(@"%@", NSStringFromCGRect(self.iconButton.frame)); }
transform使用
1.位置移动
// 向上移动 - (IBAction)top:(UIButton *)sender { // 1.transform是相对于初始状态的一种状态,但是其实self.head.frame.origin的值已经被改变了 // self.head.transform = CGAffineTransformMakeTranslation(0, self.head.transform.ty - 20); // 2.使用原有的transform生成新的transform self.head.transform = CGAffineTransformTranslate(self.head.transform, 0, -20); }
2.尺寸变化
// 缩小 - (IBAction)narrow:(UIButton *)sender { // 缩小20% self.head.transform = CGAffineTransformScale(self.head.transform, 0.8, 0.8); }
3.旋转
/** 旋转 */ - (IBAction)rotate:(UIButton *)button { // 在OC的开发中,关于角度统一都使用弧度值,逆时针是负值,顺时针是正值 // 180° = M_PI CGFloat angle = (button.tag) ? -M_PI_4 : M_PI_4; [UIView beginAnimations:nil context:nil]; self.iconButton.transform = CGAffineTransformRotate(self.iconButton.transform, angle); [UIView commitAnimations]; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?