1,
Core Graphics是一套提供绘图功能的C语言API,它最重要的“对象”是图形上下文(CGContextRef的“对象”),负责存储绘画状态(例如画笔颜色和线条粗细)和绘制内容所处的内存空间。
2,
子类无法访问父类在类扩展中声明的属性和方法。但是如果子类和父类在同一个文件里定义和实现,子类是可以访问到的
在BNRHypnosisView.m实现文件里,父类类扩展里的属性circleColor能被子类访问到,如下图
3,
将UIScrollView看成是镜头,而其子视图是要拍摄的景观。我们移动的是“镜头”而不是“景观”。UIScrollView的frame就是这个"镜头"的尺寸,而其能够拍摄的范围是由其属性contentSize决定的。
4,
UIScrollView对象的分页实现原理是:UIScrollView对象会根据其bounds的尺寸,将contentSize分割成尺寸相同的多个区域。拖动结束后,UIScrollView实例会自动滚动并只显示其中的一个区域
self.scrollView.pageEnabled = YES;
5,
UIVew的sizeToFit方法可以自适应宽高,注意其调用的位置,一定是在获得了展示内容之后,否则设置无效。
UILabel *messageLabel = [[UILabel alloc] init];
messageLabel.textColor = [UIColor redColor];
messageLabel.text = message;
[messageLabel sizeToFit];//宽高自适应,放在上面一行代码的前面就不行。
//获取随机x,y坐标
int width = (int)(self.view.bounds.size.width - messageLabel.bounds.size.width);
int x = arc4random() % width;
int height = (int)(self.view.bounds.size.height - messageLabel.bounds.size.height);
int y = arc4random() % height;
//设置frame
CGRect labelFrame = messageLabel.frame;
labelFrame.origin = CGPointMake(x, y);
messageLabel.frame = labelFrame;
[self.view addSubview:messageLabel];
6,
稍微倾斜iOS设备,主屏幕中的图标会随着倾斜方向相对于壁纸移动。这是通过感应器实现的一种视差效果(parallax)。iOS设备内嵌了许多功能强大的传感器,如加速传感器,磁场传感器和三轴陀螺仪等。
应用可以通过UIInterpolatingMotionEffect类来实现一定程度的视差效果。如下,对label添加水平方向和竖直方向上的视差效果。其中心坐标在每个方向上最多移动25个点。
UIInterpolatingMotionEffect *motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
motionEffect.minimumRelativeValue = @(-25);
motionEffect.maximumRelativeValue = @(25);
[messageLabel addMotionEffect:motionEffect];
motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
motionEffect.minimumRelativeValue = @(-25);
motionEffect.maximumRelativeValue = @(25);
[messageLabel addMotionEffect:motionEffect];