UIView的常见属性

UIView的常见属性:xib文件中显示




注意:当你发现通过代码无法修改控件的位置或者尺寸的时候,应该去掉storyboard里面的autolayout功能




如何修改控件状态

如何修改控件的状态呢?方法很简单:

每一个UI控件都是一个对象

修改UI控件的状态,其实就是修改控件对象的属性

比如修改UILabel显示的文字,就修改UILabel对象的text属性即可

比如修改UIImageView显示的图片,就修改UIImageView对象的image属性即可

不难想到,每一个UI控件肯定都有很多属性,比如:

UIProgressView进度条控件有progress属性(进度值)

UILabelUITextField都有text属性(显示文字)



UIView的常见属性:(建议条件头文件中查看)

获取自己的父空间对象

@property(nullable, nonatomic,readonly) UIView       *superview;


获取自己的所有子空间对象

@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *subviews;


控件的ID(标识),父控件可以通过tag来找到对应的子控件

@property(nonatomic) NSInteger tag;


控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

@property(nonatomic) CGAffineTransformtransform;


控件所在矩形框在父控件中的位置和尺寸 ( 以父控件的左上角为坐标原点 ) 可以定义控件的位置 (origin) 和大小 (size)

@property(nonatomic) CGRect frame;


控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以boundsxy一般为0)

注意:如果没有设置位置的情况下,把自己的左上角放在控制器的中心点

可以定义控件的大小W H(size)

@property(nonatomic) CGRect bounds;


控件中点的位置(以父控件的左上角为坐标原点)

可以定义控件的位置X Y(center)

@property(nonatomic) CGPoint center;



 



常用的Xcode插件

Xcode插件大全

http://www.cocoachina.com/industry/20130918/7022.html

 

必备

文档注释生成:https://github.com/onevcat/VVDocumenter-Xcode

自动检索图片名:https://github.com/ksuther/KSImageNamed-Xcode

插件管理工具:https://github.com/mneorr/Alcatraz

 

移除插件(可以使用上面提到的插件管理工具Alcatraz

~/Library/Application Support/Developer/Shared/Xcode/Plug-ins文件夹中删除

 

插件失效修复:http://joeshang.github.io/2015/04/10/fix-xcode-upgrade-plugin-invalid/

 


 

 总结:

1.监听:监视我们的肢体按下(点击)哪个按钮(可以被点击的东西)事件(系统调用的是那个方法)

2.storyboard : 描述软件界面的 目前理解: 应用程序一启动就会加载这个文件 

3.文字 是使用UILabel  按钮使用  UIButton 创建对象

 

3.控制器 : 控制器就是继承自UIViewController

  控制器就是管理"当前的软件界面"的所有事件(点击,拖拽)

 

4.IBAction 返回值相当于void

  能让storyboard中的控件跟(方法)代码进行连线

 

5. 连线:

   why:当按钮需要"控制器"处理某些事件的时候,那么这个处理就应该交给控制器的方法来做

   what:只有在方法返回类型是IBAction的情况下,才能连线

   how:首先 方法的返回值必须是IBAction  xcode上右上角的双环按钮,直接脱线

 

 6. 常见错误

    reason: '[<ViewController 0x7fc07ae36380> setValue:forUndefinedKey:]: this class is not key

value coding-compliant for the key label.'

    这个情况一般是: 属性(label)之间连线,属性不存在,但是线还在

 

    其他情况 kvc:

    reason: '-[ViewController blueClick]: unrecognized selector sent to instance 0x7ffd63828e90'

    找不到按钮的方法(不可识别的方法)(blueClick)

 

7. 拷贝的时候会直接把线也一起copy(注意点)

 

8. 分类和类扩展

   类扩展:可以扩展属性,成员变量,方法,一般情况下属性都是放在类扩展内,苹果官方也是这么建议的(没必要让外界知道封装性)

   分类:只能扩展方法

 

9. storyboard  应用程序已启动就会加载main.storyboard , 创建箭头指向的控制器,初始化控制器内部的所有UI(UI

   进阶会讲app的启动原理)

   注意点:类型不匹配不能连线

 

10. superview: 获取当前的控件的父控件  (获取到调用者(谁调用的谁就是调用者)父控件)

    self.btn.superview   self.btn 就是调用者

 

11. subviews :获取当前控件的所有子控件, 返回一个装满控件的数组

              获取调用者的所有子空间

              self.purpleView.subviews   self.purpleView  就是调用者

 

13. addSubView:  添加一个子控件,添加到调用者身上(谁调用这个方法那么谁就是调用者)

 

14. removeFromSuperview:从父控件把当前(调用者)控件移除

[xiaojian removeFromSuperview]

[liuqi addSubView:xiaojian]

 

 

15 viewWithTag:  根据调用内部子空间的tag找出对应的子控件

                1. 直接子控件

                2. 按顺序找子空间内部的所有自控,然后找后面自控件的所有子控件

 

 

16. frame 既能设置尺寸也能设置位置

    设置控件在父控件中的尺寸和位置

 

17. bounds 只能设置尺寸

    设置控件在父控件中的尺寸

如果没有位置的话,那么使用自己的中心放在左上角

 

18. center 只能设置位置

    设置控件的中心点在父控件中的位置

 

19. OC 不允许直接修改对象的  结构体的 成员的 属性

    解决的方案    command + ]

        来一个临时的frame  存储 对象的frame

        CGRect tempFrame = self.myBtn.frame;

        直接改变临时的frame

        tempFrame.origin.y -= 10;

        赋值给对象的frame

        self.myBtn.frame = tempFrame;

 

 1. UILabel

    1. text  设置label的文字

    2. textcolor 设置label的文字颜色

    3. textAlignment 对齐方式

    4. numberOfLines 换行个数  0 "自动换行"

    5. linesBreakMode  缩进方式  ...abc  abc...  a..bc

    6. font  字体大小和样式  (系统默认样式, 斜体样式,粗体样式)

         font  系统默认样式   斜体   粗体

         系统样式

         label.font = [UIFont systemFontOfSize:19.0f];

         粗体

         label.font = [UIFont boldSystemFontOfSize:24.0f];

         斜体

        label.font = [UIFont italicSystemFontOfSize:24.0f];

2. imageView

    contentMode

        拉伸至填充整个UIImageView

        UIViewContentModeScaleToFill,

        等比例拉伸 至自适应

        UIViewContentModeScaleAspectFit,

        等比例拉伸  至填充

        UIViewContentModeScaleAspectFill,

 

        不拉伸  不缩放  显示位置

        UIViewContentModeCenter,

        UIViewContentModeTop,

        UIViewContentModeBottom,

        UIViewContentModeLeft,

        UIViewContentModeRight,

        UIViewContentModeTopLeft,

        UIViewContentModeTopRight,

        UIViewContentModeBottomLeft,

        UIViewContentModeBottomRight,

 

 

3. 缓存

    UIImage *img = [UIImage imageNamed:iconName];

        通过这种方式一定有缓存

    使用 imageWithContentsOfFile  没有缓存  用完就干掉

    用完了  必须替换图片

 

4. bundle

    就是一个文件

    mainbundle 资源文件夹  里面装的是所有资源文件

 

5. images.xcassets  可以更改图片的属性   不能获取全路径(因为它是一个压缩包)

        不考虑缓存

        经常使用的

    直接放在项目里   可以获取全路径  但是不能改图片的属性

        考虑缓存

        不经常使用

 

6. UIButton

    1. 不能直接给按钮的titleLabel/ imageView赋值

        因为这样赋值 按钮不知道  你需要是给它的那个状态下的属性赋值

    2. [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

        当触发了UIControlEventTouchUpInside 事件之后  调用  控制器(self) click方法

    3. 任何继承自UIControl的类都可以使用 addTarget方法

    4. [sender isKindOfClass:[UIButton class]]

        判断sender的类型是否匹配

 

7. 按钮模糊(蒙版)的效果是因为按钮是system

 

8. self.purpleView.subviews 0.1.2.3.4.5.6(addSubview的情况下)

 

9. index%3 = cos   index/3 = row

 

10. 思路:

    1. 搭建软件界面

    2. 监听按钮的点击, 点击添加往紫色view中添加一个控件

    3. 设置位置

        1. 获取下标

        2. 根据下标计算 cos  row

        3. cos 决定 x   row  决定是y

        4. 添加一个黑色view,而这个view中包含两个自控件(图片,名称)

        5. x, y 只决定 view  (不决定里面的子空间,子控件位置相对黑色的view)

             黑色的子控件建议: x都是0 ,图片的y 名称的y 等于 图片的高

        6. 设置数据

            采取的懒加载, 用到的时候再加载

            1. 创建两个数组

            2. 创建一个装满字典的数组

        颜色 一般情况  是用来调试的










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值