AI智能
改变未来

iOS复习记录日记02-子类父类的控制属性,transform的认识[2020]


02日记.

今天是3月27号,我很冷. 心冷噢哈哈…
主要以开发出一个汤姆猫帧动画为基础.

属性补充

相较于上一篇的属性补充
补充1. TextField属性Placeholder 为灰显示,如果编辑框一旦有内容,则取消显示.
TextField属性SecureTextEntry是可以以掩码格式输入, 这玩意一个项目一辈子也永不到几次.
TextField属性ClearButton设置什么时候显示x符号
UIView .subviews 拿到全部子控件
UIVIew .superview 拿到父控件
UIView viewWithTag 通过tag拿到子控件
UIview addSubview 添加一个子控件
UIVIew removeFormSuperview 从父类控件中移出
UIView .enable 设置可用
值得一说的是 至于.属性 在oc语言中是没有的, 这是在预编译的时候系统会自动替换

Transform是上一篇日记没有写到的地方
所有的UIView都会有这个属性.这是很重要的.
需要先了解 transform是通过一个结构体进行保存的 struct CGAffineTransform
这个结构体包含信息{CGFLoat,a,b,c,d} {CGFloat tx,ty}
因为是结构体属性,我们不可能直接修改它,需要获得原始属性,再次之上修改后重新赋值.

直接赋值 直接更改 不累加 平移:
也可以创建一个:CGAffineTransformMakeTranslation(tx,ty);
view.transform=CGAffineTransformMakeTranslation(0,-50);
那么它会相较于原值向上平移50
如果需要累加平移:
CGAffineTransformTranslate(CGAffineTransform,tx,ty);

直接赋值 直接更改 不累加 缩放:
CGAffineTransformMakeScale(x轴的缩放倍数,y轴的缩放);
如果需要累加缩放:
CGAffineTransformScale(CGAffineTransform,x轴的缩放,y轴的缩放);

直接赋值 直接更改 不累加 旋转:
CGAffineTransformMakeRotation(弧度); M_PI_4// 45度
如果需要进行累加旋转
CGAffineTransformRotate(CGAffineTransform,弧度);

还原恢复到原始位置.
CGAffineTransformIdentity 常量
## 以上记得没make和有make的区别就行了 ios开发也不常用这些.
特别注意,如果没有以前的值,用的是make,那么请不要多个操作,它们是会被相互覆盖的.
特别注意,如果没有以前的值,用的是make,那么请不要多个操作,它们是会被相互覆盖的.

图片浏览器

懒加载是值得一说的事
手机运行为了保证足够的内存,不到万不得已的时候,任何对象是不会提前加载的
众所周知封装 get和set吧. 在第一次需要的时候 get方法内,判断是否为空,在进行初始化
这样的操作可以在用的时候加载,不用的时候为nil.
这样的手法操作称之为懒加载,我也是学了ios的时候才知道get方法还能这么玩.

在数组懒加载的时候加载一个plist文件
NSBundle mainBundle方法可以获取到当前的安装路径,它是一个单例
一个参数方法 pathForResource@“xxx.plist”; 可以在路径后自动追加完整名称
ofType:一般用来写后缀的,但懒省事会多点,就写nil,在pathForResource中写全就行

那么就已经获取到了一个plist文件的路径了
通过NSArry的类方法 arrayWithContentsOfFile:path,会自动根据路径加载plist的内容
通过加载到的nsarray 调用 UIImage ImageNamed:dict[@“xxx”]; 加载出自己的图片
然后展示到UIImageVIew中,就大功告成了.

快速创建一个字典 NSDictionary *dict = @{@“123”?“123”};
但是我可以很负责的说清楚 plist就是一个xml 如数据较大,千万别这么搞.
除非你自己写个小型xml解析库, 不同的类型分批存储,不要超过10兆最好.

汤姆猫帧动画

拷贝资源请不要复制粘贴,这样在本质上是过不去的.至于为什么你试试就知道了
一定要拖拽到资源库内.
注意:这只是一种代码测试,具体项目中用帧动画,老板绝对破产倒闭
1.设置图片框的全部帧
uiimageview.animatoinimages = NSMutableArray(里面是全部的照片)
2.设置多久播放完这些
uiimageview.animationduratioin = 1;
3.设置重复播放多少次
uiimageview.animationrepeatcount = 1; //默认无限执行
4.开启动画
stratAnimating
属性
isAnimating 是否在执行
stopAnimating 停止执行
这样就可以执行一个帧动画了,但是,它存在着内存占用的问题.!!!
你把全部的组动画,都加载到了内存中,一直没有释放…

注意:
UIImage imageNamed:“图片名字” 这个加载图片的方法
会把图片加载到内存中,不会释放的,方便下次调用的时候直接内存调用速度更快
缺点,如果是大量的图片,那么内存不释放,会直接沾满的.

UIImage imageWithContentsOfFile:“图片完整路径” 需要使用这个方法
这个方法适用于大量图片的加载,系统并不会做缓存处理.
复习:NSBundle mainBundle pathForResuource拿到图片完整路径哦

如果播放到最后一次了 不进行播放了,因为指针引用的关系
一定要把animatoinimages = 设置为nil
大致了解就行,这东西说实话不常用 用不上.

本章总结

TextField属性Placeholder
TextField属性SecureTextEntry
TextField属性ClearButton
UIView .subviews 拿到全部子控件
UIVIew .superview 拿到父控件
UIView viewWithTag 通过tag拿到子控件
UIview addSubview 添加一个子控件
UIVIew removeFormSuperview 从父类控件中移出
UIView .enable 设置可用
CGAffineTransform
CGAffineTransformMakeTranslation(tx,ty); 平移
CGAffineTransformTranslate 平移
CGAffineTransformMakeScale(x轴的缩放倍数,y轴的缩放); 缩放
CGAffineTransformScale 缩放
CGAffineTransformMakeRotation(弧度); M_PI_4// 45度
CGAffineTransformRotate 翻转
CGAffineTransformIdentity 常量
NSBundle mainBundle pathForResource@“xxx.plist”;
UIImageVIew里面的属性:
animationImages
animationDuration
animationRepeatCount
startAnimating
isAnimating
stopAnimating
UiImage初始化方式
imageWithContentsOfFile:path //非缓存
imageNamed:string //缓存
以上就是这个里面的属性了, 善用就行

  • 点赞
  • 收藏
  • 分享
  • 文章举报

pathosis9发布了16 篇原创文章 · 获赞 0 · 访问量 2834私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » iOS复习记录日记02-子类父类的控制属性,transform的认识[2020]