UIKit常用API:Transform

需求

  • 使用Transform系列的API,该API中提供了旋转、平移等功能。其中函数中带make的效果是只变化一次,不带make可变化多次。此外,还有恢复函数:CGAffineTransformIdentity。

代码实现

注意按钮绑定的是同一个响应事件,且不同按钮操作的是同一个图片按钮,通过tag可以获取到同一个带背景图的组件。

- (void) test_Common_arrtibute{UIButton *btn1 = [[UIButton alloc] initWithFrame:CGRectMake(150, 150, 200, 100)];UIButton *btn2 = [[UIButton alloc] initWithFrame:CGRectMake(150, 250, 200, 100)];UIButton *btn3 = [[UIButton alloc] initWithFrame:CGRectMake(150, 350, 200, 100)];UIButton *btn4 = [[UIButton alloc] initWithFrame:CGRectMake(150, 450, 200, 100)];// 需要大小, 设置BGM之前,需先设好大小,不然会报错,明天试试是不是这个原因。UIButton *btn5 = [[UIButton alloc] initWithFrame:CGRectMake(150, 80, 100, 100)];[btn1 setTitle:@"可变一次按钮" forState:UIControlStateNormal];[btn2 setTitle:@"可变多次按钮" forState:UIControlStateNormal];[btn3 setTitle:@"旋转按钮" forState:UIControlStateNormal];[btn4 setTitle:@"恢复按钮" forState:UIControlStateNormal];[btn5 setTitle:@"变化的背景图" forState:UIControlStateNormal];[btn5 setBackgroundImage:[UIImage imageNamed:@"1.jpg"] forState:UIControlStateNormal];[btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn4 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];[btn5 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];// 加tagbtn1.tag = 1;btn2.tag = 2;btn3.tag = 3;btn4.tag = 4;btn5.tag = 5;// 测试常见属性:// 绑定事件:[btn1 addTarget:self action:@selector(test_arrtibute1:) forControlEvents:UIControlEventTouchUpInside];//[btn2 addTarget:self action:@selector(test_arrtibute1:) forControlEvents:UIControlEventTouchUpInside];// 旋转[btn3 addTarget:self action:@selector(test_arrtibute1:) forControlEvents:UIControlEventTouchUpInside];// 恢复[btn4 addTarget:self action:@selector(test_arrtibute1:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn1];[self.view addSubview:btn2];[self.view addSubview:btn3];[self.view addSubview:btn4];[self.view addSubview:btn5];
}// addSubview   UIButton的BGM设置:必须初始化和设置大小要在前面// 测试transform属性:移动一次,该API是按照百分比的
// 移动多次
//旋转
// 总结:带make的是变化1次,而不带make能变多次。
- (void) test_arrtibute1:(UIButton *)sender{UIButton * btn = [self.view viewWithTag:5];switch (sender.tag) {// 虽然按钮不同,但是要变化的是同一个背景图// 变换一次case 1:btn.transform = CGAffineTransformMakeTranslation(0, -50);break;// 可变换多次case 2:btn.transform = CGAffineTransformTranslate(btn.transform, 0, 50);break;// 旋转:负数是逆时针,正数顺时针,且最后的数字是几分之派case 3:btn.transform = CGAffineTransformRotate(btn.transform, -M_PI_4);break;// 恢复case 4:btn.transform = CGAffineTransformIdentity;break;}
}@end

效果展示

在这里插入图片描述

收获与注意:

熟悉了API,同时发现了一些会犯错的点,需要注意起来:

self view:addsubview:

  1. 关于addsubview:在ViewController文件中写的view或组件,均需要做添加addsubview,不论是viewDidLoad函数中还是自定义函数,都使用统一的**[self.view addSubview: ]**; 不论是组件还是View,都需要做addSub添加。

关于组件不显示问题

  1. 初始化、frame设置、字体颜色为白色导致不显示、addSubview问题。
  2. UIButton报错问题:在设置BGM时,一定得先设置好框体的大小,否则会运行报错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.数据类型与变量(java篇)

目录 数据类型与变量 数据类型 变量 整型变量 长整型变量 短整型变量 字节型变量 浮点型变量 双精度浮点型 单精度浮点型 字符型变量 布尔型变量(boolean) 类型转换 自动类型转换(隐式) 强制类型转换(显式) 类型提升 字符串类型 数据类…

百亿补贴为什么用 H5?H5 未来会如何发展?

百亿补贴为什么用 H5?H5 未来会如何发展? 本人有一些分析预测。当然,这些分析预测只是个人观点,如果你有不同的意见,欢迎在评论区讨论交流。 百亿补贴为什么用 H5 我们先看两张图,在 Android 手机开发者…

2024年3月 青少年等级考试机器人理论真题二级

202403 青少年等级考试机器人理论真题二级 第 1 题 一个机器小车,用左右两个电机分别控制左右车轮,左侧电机转速是100rpm,右侧电机转速是50rpm,则此机器小车?( ) A:原地右转 B&am…

华企盾DSC数据防泄密软件有哪些水印功能?

在企业数据安全领域,水印技术是一种重要的信息保护策略,用于防止数据泄露和确保信息的原始性和完整性。根据回顾的资料,以下是企业中常用的几种水印技术: 屏幕浮水印:这种水印能够在用户的屏幕上显示公司的标志或者其他…

Golang SDK安装

windows环境安装 1.链接: 下载地址 2.安装SDK 检查环境变量: 3.开启go modules,命令行执行一下命令: go env -w GO111MODULEon4.设置国内代理,命令行执行一下命令: go env -w GOPROXYhttps://proxy.golang.com.cn,https:/…

C#之partial关键字

在C#中,partial关键字用于声明一个类、结构体、接口或方法的分部定义。这意味着可以将一个类或其他类型的定义分成多个部分,这些部分可以在同一个命名空间或程序集中的多个源文件中进行定义。当编译器编译这些部分时,会将它们合并成一个单独的…

打印机 ansible配置dhcp和打印机

部署dhcp服务器 主机发送Discover报文 目标为广播地址 同一网段的dhcp收到报文后,dhcp响应一个offer报文 offer报文:dhcp自己的ip地址。和客户端ip以及使用周期,和客户端ip网络参数 最后主机单独发一个request报文 给那个选择的dhcp服务器 &…

JUC下的ThreadLocalRandom详解

ThreadLocalRandom 是Java并发包(java.util.concurrent)中提供的一个随机数生成器类,它是从Java 7开始引入的。相较于传统的Math.random()或Random类,ThreadLocalRandom更适用于多线程环境,因为它为每个线程维护了一个…

福建医疗器械展/2024厦门国际医疗器械展览会重磅来袭

2024中国(厦门)国际医疗器械展览会 时 间:2024年11月1-3日 November 1-3, 2024 地 点:厦门国际会展中心 Xiamen International Conference & Exhibition Center ​ ◆组织机构 主办单位: 中国技术市场协会医…

Blazor入门-调用js+例子

参考: Blazor入门笔记(3)-C#与JS交互 - 半野 - 博客园 https://www.cnblogs.com/zxyao/p/12638233.html Blazor项目如何调用js文件_blazor加载js-CSDN博客 https://blog.csdn.net/bdbox/article/details/135438411 本地环境:win1…

六西格玛绿带培训:企业变革的催化剂,个人成长的助推器!

六西格玛绿带培训不仅是一套系统的管理方法,更是一种追求卓越、持续改进的文化和思维方式。它强调以数据为基础,通过科学的分析和决策,实现质量的飞跃和成本的优化。对于企业来说,六西格玛绿带培训能够帮助企业建立可靠的质量管理…

AI翻唱+视频剪辑全流程实战

目录 一、AI翻唱之模型训练 (1)模型部署 (2)数据集制作——搜集素材 (3)数据集制作——提升音频质量 方法一:使用RVC提供的音频处理功能。 方法二:可以使用音频剪辑工具Ad…

我是如何免费抵御一个多月的 DDos/CC 攻击的?

今天明月给大家详细分享一下我的博客是如何免费抵御了长达一个多月的 DDos/CC 攻击的,在【现在 DDos/CC 攻击门槛低的可怕!】一文里明月就说过现在 DDos/CC 攻击几乎是没有门槛的,任何一个老鼠屎在群里看到你的博客都可以轻松便捷的发动一次 …

R语言数据分析案例-股票题目分析

Value at Risk(VaR)是一种统计技术,用于量化投资组合在正常市场条件下可能遭受的最大潜在损失。它是风险管理和金融领域中一个非常重要的概念。VaR通常以货币单位表示,用于估计在给定的置信水平和特定时间范围内,投资组…

宝塔助手v1.4.1/手机操控云服务器的神器软件

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP。通过这款APP你可以随时随地的查看一台或多台服务器的运行情况,对服务器网站、FTP、数据库、文件进行管理。内置文件编辑器,可以对网站文件进行修改。 链接:https:…

【ARM Cortex-M 系列 2.2 -- Cortex-M7 单步调试原理及实现详细介绍】

请阅读【嵌入式开发学习必备专栏】 文章目录 单步调试概述单步执行原理Debug stepping control using the DHCSR 紧接上篇文章 【ARM Cortex-M 系列 2.1 – Cortex-M7 Debug system registers】 单步调试概述 在ARMv7-M架构中,通过使用单步调试(Haltin…

粒子群算法(Particle Swarm Optimization)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 算法背景 粒子群优化算法(Particle Swarm Optimization,PSO)的灵感来源于鸟群或鱼群的觅食行为。想象一下&a…

Teachable Machine:Google开发可在浏览器运行免编程机器学习工具

项目说明 Teachable Machine 是由 Google 开发的一款基于机器学习的在线工具,为用户提供了创建个性化机器学习模型的简便途径,无需深入专业领域或编程技能。 允许用户快速、简单地创建自己的机器学习模型,主要用于进行图像、声音和姿势等数据…

鸿蒙内核源码分析(内核态锁篇) | 如何实现快锁Futex(下)

本篇为快锁下篇,说清楚快锁在内核态的实现,解答以下问题,它们在上篇的末尾被提出来。 鸿蒙内核进程池默认上限是64个,除去两个内核进程外,剩下的都归属用户进程,理论上用户进程可以创建很多快锁&#xff0…

【Unity从零开始学习制作手机游戏】第01节:控制3D胶囊体运动

1. 新建Project L01 使用3D Mobile模板。 2. 建立一个平面,用来承载物体 3. 导入Unity库内的胶囊体 下载 StandardAssets https://download.unitychina.cn/download_unity/e80cc3114ac1/WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-5.6.7f1.exe …