我的问题是:我有一个简单的块图像,我想制作一个网格.我在我的UIView中创建了一个CGPoints数组.然后我用了
blackImage = [UIImage imageNamed:@"black.png"];
Run Code Online (Sandbox Code Playgroud)
然后
- (void)drawRect:(CGRect)rect {
for (int j = 0 ; j <= 11; j++)
{
for (int i = 0 ; i <= 7; i++)
{
[blackImage drawAtPoint: (CGPointFromString([[self.points objectAtIndex:j] objectAtIndex:i]))];
}
}
[whiteImage drawAtPoint:(CGPointMake((CGFloat)(floor((touchX+0.001)/40)*40), (CGFloat)(floor((touchY+0.001)/40))*40))];
// [whiteImage drawAtPoint:(CGPointMake(240.0, 320.0))];
}
Run Code Online (Sandbox Code Playgroud)
其中TouchX和TouchY是用户触摸屏幕的CGPoints.所以我基本上在用户触摸的网格上显示不同的图像.
首先,问题是每次调用DrawRect时都会重绘整个屏幕.我希望能够保存状态(通过更改BOOL的数组?)并让用户在屏幕上拖动并更改多个图像.但是,当我在DrawRect之外时,我无法在UImage上使用"drawAtPoint"方法.(抛出错误).
无论如何,我开始研究CoreAnimation和Quartz文档,并且真的很困惑.我不确定我是否应该为每个砖块创建多个UIViews(似乎过多),或者是CALayers或CGLayers的网格......我认为这很简单,我想做什么......但我真的不明白图层,以及使用CALayer和CGLayer之间的区别.显然"所有UIViews都是层支持的"这是什么意思?
我对如何实现这一点感到很遗憾.我基本上想要在网格中交换图像,以便用户可以在屏幕上"绘制"并切换图像.
我尝试使用[self setNeedsDisplayinRect]实现此功能,并传入用户手指下的CGRect.然而,这仍然是在TouchesMoved中调用DrawRect,它给了我想要的效果,但在iPhone上却太慢了.使用CALayers是否有更有效的方法来实现相同的效果?我是Core Animation的新手,并不真正了解如何使用图层来解决这个问题.
所以我有一个有阴影的UIView:
[containerFrame.layer setShadowOffset:CGSizeMake(0, 1)];
[containerFrame.layer setShadowRadius:4.0];
[containerFrame.layer setShadowColor:[UIColor colorWithRed:34/255.f green:25/255.f blue:25/255.f alpha:1.0].CGColor];
[containerFrame.layer setShadowOpacity:0.4];
Run Code Online (Sandbox Code Playgroud)
有了这个,我的滚动FPS下降到20-30.移除阴影然后繁荣,我的FPS回到60并且滚动像黄油一样光滑.现在问题是我需要在这个盒子/容器视图周围有一个阴影效果.如何在不降低滚动速度的情况下实现这一目标?
所以我将块动作存储到一个nsmutabledictionary中,然后当一个响应返回到websocket时调用它们.这会将异步请求转换为块语法.这是精简代码:
- (void)sendMessage:(NSString*)message responseAction:(void (^)(id))responseAction
{
NSString *correlationID = (NSString*)[[message JSONValue] objectForKey:@"correlationId"];
[self.messageBlocks setObject:responseAction forKey:correlationID];
NSLog(@"Sending message: %@", correlationID);
[webSocket send:message];
}
- (void)webSocket:(SRWebSocket *)wsocket didReceiveMessage:(id)message;
{
NSString *correlationID = (NSString*)[[message JSONValue] objectForKey:@"correlationId"];
NSLog(@"Incoming message. CorrelationID: %@", correlationID);
void (^action)(id) = nil;
if (correlationID) {
action = [messageBlocks objectForKey:correlationID];
if (action) action([message JSONValue]);
[messageBlocks removeObjectForKey:correlationID];
}
}
Run Code Online (Sandbox Code Playgroud)
注意:服务器使用随请求发送的correlationID进行响应.因此,每个响应都通过该ID链接到每个请求.
这完美,比我预期的更好.我的问题是以这种方式运行块是否安全?正在调用[messageBlocks removeObjectForKey:correlationID]; 足以将其从内存中删除.我记得pre-ARC,block_release是一个选项.
cocoa-touch nsmutabledictionary websocket ios objective-c-blocks
我想使用以下代码旋转imageView:
[UIView animateWithDuration:.25 animations:^{
self.imageView.transform = CGAffineTransformRotate(self.plusView.transform, M_PI_4);
}];
Run Code Online (Sandbox Code Playgroud)
有线的事情是:如果我在没有自动布局的情况下运行此代码,那么每件事情都可以.但是当使用自动布局时,图像视图会在旋转之前移动一个垃圾像素,为什么?
我试图让我的UIImageView的周围区域变暗,并留下一部分(我用我的面具定义).
现在我正在定义我的蒙版并设置我的imageView.layer.mask,但是不是使图像的其余部分变暗,而是将其完全删除.
我想要的效果类型示例: 
我得到的例子: 
参考文档提到掩码使用它的图层的alpha,所以我试图操纵蒙版的不透明度.然而,这似乎只影响我想要单独留下的部分的不透明度,而图像的其余部分仍然完全被切除.
谁能指出我做错了什么?谢谢.
这是我的代码:
CAShapeLayer *mask = [CAShapeLayer layer];
GMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 1052, 448);
CGPathAddLineToPoint(path, nil, 2, 484);
CGPathAddLineToPoint(path, nil, 54, 1263);
CGPathAddLineToPoint(path, nil, 56, 1305);
CGPathAddLineToPoint(path, nil, 380, 1304);
CGPathAddLineToPoint(path, nil, 1050, 1311);
CGPathCloseSubpath(path);
mask.path = path;
CGPathRelease(path);
//mask.opacity = 0.5; //doesn't affect the surrounding portion, only the cut out area.
self.imageView.layer.mask = mask;
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Apple Maps在URL中设置地图类型,但它似乎并没有起作用.我能做些什么不同的事情?我这样做是通过&t=satellite在URL中指定类型,如下所示:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.apple.com/?daddr=San+Francisco,+CA&saddr=%@,%@&t=satellite", LatitudeCurrentLocation, LongitudeCurrentLocation]]];
Run Code Online (Sandbox Code Playgroud)
纬度和经度是包含纬度和经度坐标的NSStrings.
如何在URL中设置may类型?
运行几分钟后,我的应用程序中的所有动画都消失了,甚至系统动画如警报动画和UINavigationController动画也消失了.可能是什么问题?
PS我不会[UIView setAnimationsEnabled]在任何地方使用.
我想剪辑 html5 画布,以便我可以按照下图实现绘图结果。
我想实现剪辑路径,以便所有绘图仅在黑色区域执行。

使用Instagram或Facebook等多个视频播放器创建UITableView非常困难.我想创建一个tableview,其中每个单元格都有一个功能正常的视频播放器.MPMoviePlayerController一次只支持一个单元格.任何建议或指向教程都会有所帮助.谢谢
ios ×8
objective-c ×5
ios7 ×2
iphone ×2
apple-maps ×1
calayer ×1
cashapelayer ×1
cocoa-touch ×1
html ×1
html5-canvas ×1
ipad ×1
logging ×1
macos ×1
mask ×1
uitableview ×1
uiview ×1
websocket ×1