我在编写一些代码时出现了一些性能问题,这些代码是为使用触摸调整CALayer大小而编写的.它工作正常,但动画远远不够活泼,落后于触摸位置.
CGPoint startPoint;
CALayer *select;
- (CGRect)rectPoint:(CGPoint)p1 toPoint:(CGPoint)p2 {
CGFloat x, y, w, h;
if (p1.x < p2.x) {
x = p1.x;
w = p2.x - p1.x;
} else {
x = p2.x;
w = p1.x - p2.x;
}
if (p1.y < p2.y) {
y = p1.y;
h = p2.y - p1.y;
} else {
y = p2.y;
h = p1.y - p2.y;
}
return CGRectMake(x, y, w, h);
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *t1 = [[[event …Run Code Online (Sandbox Code Playgroud) 好吧,这可能听起来像一个奇怪的问题,但它是一个有趣的问题.我正在为iOS编码,并且被告知最好是乘以而不是除以值,因为它更快.
我知道这些天的处理器可能会让这个问题变得没有问题,但我的好奇心已经变得更好了,我想知道是否有人能为我揭示这一点.
所以.....我的问题是这个 -
是:
player.position = ccp(player.contentSize.width / 2, winSize.height / 2);
Run Code Online (Sandbox Code Playgroud)
慢于:
player.position = ccp(player.contentSize.width * 0.5, winSize.height * 0.5);
Run Code Online (Sandbox Code Playgroud) 有没有办法使用MPMoviePlayer或AVPlayer逐帧播放视频文件?或者甚至是另一个我不知道的电影播放器?
这就是我想要做的.我想将视频加载到全屏播放器中,并根据用户交互一次移动一帧内容.这需要非常可靠,因为我需要准确控制电影播放器在任何时间显示的帧.
理想情况下,我很想知道是否可以加载视频并使用代码控制显示的帧.
我知道我可以使用UIImageView动画做到这一点,但是测试显示这会使用FAR来获取更多内存.
我正在尝试一个更复杂的项目的简单测试,但我感到困惑的是为什么下面的代码崩溃并给出一个EXC_BAD_ACCESS错误?
这是从UIView调用的.
- (void)testing {
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ball.png" ofType:nil];
CGImageRef imageRef = [[[UIImage alloc]initWithContentsOfFile:imagePath]CGImage];
// CGImageRetain(imageRef);
UIImage *newImage = [[UIImage alloc]initWithCGImage:imageRef];
UIImageView *iv = [[UIImageView alloc]initWithImage:newImage];
[self addSubview:iv];
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是CGImageRef没有被保留但是添加了CGImageRetain(imageRef); 没有区别.
我还应该注意到这个项目已经启用了ARC.
编辑
我做了一些测试,并发现这与ARC直接相关,因为我创建了2个基本项目,仅包括上面的代码.ARC的第一个关闭,它完美地工作.ARC的下一个打开,BAM崩溃并出现同样的错误.有趣的是,我在崩溃前第一次运行项目时才遇到实际的日志错误.
Error: ImageIO: ImageProviderCopyImageBlockSetCallback 'ImageProviderCopyImageBlockSetCallback' header is not a CFDictionary...
Run Code Online (Sandbox Code Playgroud) 嘿伙计们,所以......让我说我有一张NSArray图片
NSMutableArray *images = [NSMutableArray new];
[images addObject:[UIImage imageNamed:@"line1.png"]];
[images addObject:[UIImage imageNamed:@"line2.png"]];
[images addObject:[UIImage imageNamed:@"line3.png"]];
[images addObject:[UIImage imageNamed:@"line4.png"]];
Run Code Online (Sandbox Code Playgroud)
现在我想使用for循环一次加载所有这些但是这里是catch ....我需要能够将图像设置为隐藏,直到用户通过交互取消隐藏.
for (UIImage *image in images) {
UIImageView *line = [[UIImageView alloc] initWithImage:image];
line.hidden = YES;
[self.view addSubview:line];
}
Run Code Online (Sandbox Code Playgroud)
但那么如何使用其他方法将隐藏的BOOL设置为NO?
作为第二个问题,如何在上面的代码中释放*行?
谢谢,达伦
好的....这似乎是一个简单的问题,但我找不到任何关于它的信息,所以我想我会在这里问.
我试图在var中存储一个数字(int),但我需要在它之前保留0
例如:
int x = 0001;
NSLog(@"%i",x) // returns 1
Run Code Online (Sandbox Code Playgroud)
有可能让它返回0001吗?
我知道我可以这样做:
NSLog(@"%04i",x); // returns 0001
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的答案,因为0的数量需要变化.
我没有特别需要使用int但它需要是一个整数.