我有一个图像,前景中有一个黄色花瓶,透明背景:

我在CGContext上绘制它:
CGContextDrawImage(context, CGRectMake(0, 0, 100, 100), myImage.CGImage);
Run Code Online (Sandbox Code Playgroud)
我可以使用以下语句在它周围画一个阴影CGContextDrawImage:
CGContextSetShadowWithColor(context, CGSizeMake(0,0), 5, [UIColor blueColor].CGColor);
Run Code Online (Sandbox Code Playgroud)

但我想在图像周围放一个笔画,这样看起来就像是:

如果我这样做:
CGContextSetRGBStrokeColor(shadowContext, 0.0f, 0.0f, 1.0f, 1.0f);
CGContextSetLineWidth(shadowContext, 5);
CGContextStrokeRect(shadowContext, CGRectMake(0, 0, 100, 100));
Run Code Online (Sandbox Code Playgroud)
它(显然)围绕整个iamge绘制一个矩形边框,如下所示:
这不是我需要的.
但是在第三张图片中绘制边框的最佳方法是什么?
请注意,在这种情况下无法使用UIImageView,因此使用UIImageView的CALayer属性不适用.
我对UIPanGestureRecognizer有一点问题.如果用户平移到左上角(表示负x和y方向),则识别器不会报告UIGestureRecognizerStateEnded状态
如果用户抬起手指时任何方向为正,则状态更改为UIGestureRecognizerStateEnded,但如果两个方向均为负或零,则仅停止报告操作.
这很糟糕,因为我隐藏了一些叠加视图,只要用户拖动某些内容并且这些视图在失败的情况下不会返回.
当然我可以设置一个NSTimer来重新显示一段时间后再次显示覆盖,但我可以看到我的代码中没有明显的错误,我希望它干净.
我错过了什么吗?它是Apple Bug吗?
初始化是这样的:
pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panRecognized:)];
[self addGestureRecognizer:pan];
[pan release];
Run Code Online (Sandbox Code Playgroud)
处理函数如下所示:
- (void)panRecognized:(UIPanGestureRecognizer *)gestureRecognizer {
switch ([gestureRecognizer state]) {
case UIGestureRecognizerStateBegan:
// fade some overlaying views out
break;
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
// fade in the overlays
break;
default:
break;
}
// handle panning
}
Run Code Online (Sandbox Code Playgroud) 我正在慢慢学习如何在Xcode和Objective-C中构建应用程序,我一直在阅读这篇关于编写Cocoa Touch应用程序的博客文章,而不使用Interface Builder,这篇博客文章介绍了有人如何只使用Interface Builder.
我发现自己更倾向于避免使用Interface Builder,因为如果只是简单的代码,我可以更快地发现问题,而且在这一点上我比编写代码更熟悉使用Interface Builder.
所以我正在考虑避免完全使用Interface Builder.但在此之前,我想了解以下内容:
有没有时候你绝对必须使用Interface Builder?没有它,有什么是不可能实现的吗?(我知道情况正好相反.)
是否有任何我可以采用的做法可以帮助我不要错过Tal Bereznitskey使用Interface Builder概述的优点.我特别想到了他所做的关于它更容易维护和更容易原型化和改变东西的观点.
无论如何,忽略Interface Builder会使我在将来构建应用程序时处于劣势.如果我坚持编写代码,那么我希望将来要开发的复杂应用程序是否会更难开发?
我目前只是自己构建应用程序,但是当我开始与其他开发人员合作时,我将处于显着的劣势,因为我从未学过如何使用Interface Builder,或者我只能知道如何编写代码?