1.用这个方法去加载图片[UIImage imageNamed:@""]内部是肯定有缓存的,用这个方法加载图片[UIImage imageWithContentsOfFile:@""]是没有缓存的。图片放到Assets.xcassets里面就是会有缓存的,因为这个里面的图片没办法获取到它的全路径,只能通过第一个方法去访问。
2.控件的init方法内部会自动调用initWithFrame:方法,所以自定义控件的时候,最好重新initWithFrame:方法。
HBCustomView.m
1.HBCustomView *customView = [[HBCustomView alloc] init];
方法调用如下:-----initWithFrame---
-----init---
因为if (self = [super init])里面会调用先调用- (instancetype)initWithFrame:(CGRect)frame方法
2.HBCustomView *customView = [[HBCustomView alloc] initWithFrame:CGRectMake(30, 100, 300, 100)];
方法调用如下:-----initWithFrame---
3.HBCustomView *customView = [[HBCustomView alloc] initWithText:@"hhhh"];
方法调用如下:-----initWithFrame---
-----initWithText---
因为if (self = [super init])里面会调用先调用- (instancetype)initWithFrame:
4.HBCustomView *customView = [[HBCustomView alloc] initWithFrame:CGRectMake(30, 100, 300, 100) text:@"hhhh"];
方法调用如下:-----initWithFrame--text-
3.layoutSubViews是系统自动调用的,其中一种情况是:当前控件的尺寸(也就是size宽高)发生改变的时候会自动调用,改变位置(也就是x,y的值)不会调用(也就是当前控件的尺寸确定以后)。第二种情况:当前控件第一次显示的时候也会自动调用这个方法。
4.如果一个控件是从xib中加载出来的,不设置尺寸会有默认的尺寸(默认的尺寸就是在xib中设置的尺寸大小)
contentRect就是按钮的bounds.注意点:这两个方法谁先调用是没法确定的
imageNamed:获取的image是不可拉伸的。第二个方法的参数的意义如下图,上下左右各有10的间距不拉伸
设置上面的参数后,拉伸的区域
直接在图片的配置中设置图片拉伸
控制器中一个控件的内存结构图
kvc取值可以代替数组遍历
5.UIScrollView可滚动的尺寸:contentSize的尺寸 减去 scrollView的尺寸.注意点:如果contentSize的尺寸小于或者等于scrollView的尺寸,scrollView是不可以滚动的。
自己写刷新控件的时候必备的属性
偏移量是scrollView的左上角减去内容的左上角。设置的contentInset跟偏移量是没关系的
代理内存图
缩放
int会强转,直接去掉小数点后面的,比如int(0.8)=0,int(1.4)=1
使用代码滚动scrollView,也会调用scrollViewDidScroll:代理方法。也就是只要scrollView发生滚动(无论scrollView滚动是代码触发的还是用户主动触发的),就会调用scrollViewDidScroll:代理方法
6.定时器一个小细节:定时器是一次性的,要么一直工作,一旦停止工作,就不能再次开启。
aotoresizing介绍:外边四根线,选中哪一根表示把view固定在父控件的哪一侧(也就是距离父控件那一侧的间距是固定的),都选中,就代表只选中了左边和上面的。也就是说左边的优先级高于右边的,上面的优先级高于下面的。选中里面的两根线,代表控件的宽和高随着父控件的宽高进行拉伸或者压缩
图中示例,代表把控件固定在父控件的右边和底部
警告是因为控件当前的frame不匹配所加的约束,但是运行起来是没问题的
图中打钩的地方选中,代表控件默认会距离左边有20的间距
选中的时候
未选中的时候
网友评论