我有一个UITextView,我试图在用户点击按钮时动画帧的更改.基本上,文本视图变得更大以适应屏幕,因此它可以显示更多文本,然后当用户再次点击按钮时,它缩小到其原始帧.
我使用块执行动画,如下所示:
if(!isDisplayingDetailView)
{
//Expand view
[UIView animateWithDuration:0.5
animations:^{
self.detailView.frame = self.view.frame;
}
completion:^(BOOL finished){
isDisplayingDetailView = YES;
}];
}
else{
//Shrink view.
[UIView animateWithDuration:0.5
animations:^{
self.detailView.frame = self.detailFrame;
}
completion:^(BOOL finished){
isDisplayingDetailView = NO;
}];
}
Run Code Online (Sandbox Code Playgroud)
self.detailView是UITextView,self.detailFrame只是一个保存原始帧的CGRect.isDisplayingDetailView只是一个BOOL,用于检查视图是否展开.我的问题是文本调整大小不是动画.我从测试应用程序中制作了一些截图来说明我的问题:应用程序默认视图:

展开的视图:

点按按钮后的文字视图:

正如您所看到的,文本会自动缩小到最终的帧大小,而没有任何类型的动画,而边界仍然是动画.我想这是正确的行为,但我想知道是否可以为文本和它的视图设置动画.
我正在使用CAShapeLayer生成一些形状.实际上我有4个CAShapeLayers代表屏幕中的一些三角形.我使用CGMutablePathRef创建形状并设置每个CAShapeLayer的path属性.三角形在不同的形状层中,因为我必须以不同的方式为每个三角形设置动画.
我使用CABasicAnimation在我的viewcontroller上执行一些动画,并动画化CAShapeLayer的path属性,如:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@”path”];
animation.duration = 2.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.repeatCount = 1e100f;
animation.autoreverses = YES;
animation.fromValue = (id)initialPath;
animation.toValue = (id)newPath;
[shapeLayer addAnimation:animation forKey:@”animatePath”];
Run Code Online (Sandbox Code Playgroud)
没关系,我可以绘制形状并为它们制作动画.我的问题是,这使用默认的alpha混合(result =(alpha*foreground)+(1 - alpha)*background)混合图像.我想要的是使用乘法混合(kCGBlendModeMultiply),但我不知道如何混合CAShapeLayer绘图和混合模式.我已成功绘制我的形状创建自定义UIView并覆盖drawRect方法,但后来我无法为形状设置动画.
有没有人有成功改变CAShapeLayer的颜色混合?
我已经看到我可以通过注册为观察者来检测屏幕亮度的变化 UIScreenBrightnessDidChangeNotification
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(brightnessDidChange:) name:UIScreenBrightnessDidChangeNotification object:nil];
}
-(void) brightnessDidChange:(NSNotification*)notification
{
NSLog(@"Brightness did change");
}
Run Code Online (Sandbox Code Playgroud)
通知的object属性是一个UIScreen对象.
我试图找到一个属性,让我知道该操作是由用户生成的,还是由iOS生成的自动更改.这对我的应用程序非常重要,因为两种情况都应该区别对待.我在文档中没有找到任何相关内容.任何帮助将不胜感激.
我正在尝试学习iOS编程的基础知识,我想知道如何使用Xcode 4.2和故事板进行页面控制?我订阅了MyCodeTeacher.com,页面控制器上的课程已经过时,不适用于新的Xcode.我无法通过谷歌找到一个教程,Apple文档也没有帮助.有人能指点我一个好的教程或给我一个基本的例子吗?
非常感谢!