显示 CGRect 边框的简单方法?
我正在尝试找到一种方法来显示 iOS 程序中某些 CGRect 的边框,以进行调试。有没有一个相当简单的方法来做到这一点?我只需要查看程序在哪里创建这些矩形,这样我就可以追踪一些奇怪的触摸行为(或缺乏)。
我的类 init
方法:
// Initialize with points and a line number, then draw a rectangle
// in the shape of the line
-(id)initWithPoint:(CGPoint)sP :(int)w :(int)h :(int)lN :(int)t {
if ((self = [super init])) {
startP = sP;
lineNum = lN;
width = w;
height = h;
int type = t;
self.gameObjectType = kPathType;
// Draw the path sprite
path = [CCSprite spriteWithFile: @"line.png" rect:CGRectMake(0, 0, 5, height)];
ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
[path.texture setTexParameters:¶ms];
if(type == 1) {
path.position = ccp(startP.x, startP.y);
} else {
path.rotation = 90;
path.anchorPoint = ccp(0, 0);
path.position = ccp(startP.x, startP.y-2);
}
[self addChild:path];
// Draw the "bounding" box
pathBox = CGRectMake(path.position.x - (path.contentSize.width/2), path.position.y - (path.contentSize.height/2), path.contentSize.width * 10, path.contentSize.height);
}
return self;
}
pathBox
是有问题的矩形。
I'm trying to find a way to display the borders of some CGRect
s in my iOS program for debugging purposes. Is there a fairly simple way to do this? I just need to see where the program is creating these rectangles, so I can track down some odd touch behaviors (or lack thereof).
My class init
method:
// Initialize with points and a line number, then draw a rectangle
// in the shape of the line
-(id)initWithPoint:(CGPoint)sP :(int)w :(int)h :(int)lN :(int)t {
if ((self = [super init])) {
startP = sP;
lineNum = lN;
width = w;
height = h;
int type = t;
self.gameObjectType = kPathType;
// Draw the path sprite
path = [CCSprite spriteWithFile: @"line.png" rect:CGRectMake(0, 0, 5, height)];
ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
[path.texture setTexParameters:¶ms];
if(type == 1) {
path.position = ccp(startP.x, startP.y);
} else {
path.rotation = 90;
path.anchorPoint = ccp(0, 0);
path.position = ccp(startP.x, startP.y-2);
}
[self addChild:path];
// Draw the "bounding" box
pathBox = CGRectMake(path.position.x - (path.contentSize.width/2), path.position.y - (path.contentSize.height/2), path.contentSize.width * 10, path.contentSize.height);
}
return self;
}
pathBox
is the rect in question.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这可以在drawRect中处理:
This can be handled within drawRect:
我将尝试假设这是一个 iOS 项目,因为这就是我所知道的。
如果这些矩形用于 UIView 或 CALayer,那么您可以为它们设置边框。
在文件中添加
#import
并使用view.layer.borderColor
、view.layer.borderWidth
添加内容你想要的。如果它只是一个图层,请删除其中的
view
部分。I'm going to take a stab and assume this is an iOS project, since that's what I know.
If these rectangles are being used for UIView or a CALayer then you can set the border for them.
Add
#import <QuartzCore/QuartzCore.h>
in your file and useview.layer.borderColor
,view.layer.borderWidth
add what you want.If it's just a layer remove the
view
part of it.我或多或少想出了如何做到这一点:只是在我的类中扩展了绘制方法,如下所示:
感谢 Cocos2D 站点上的 Blue Ether 的提醒:
http://www.cocos2d-iphone.org/forum /topic/21718?replies=5#post-120691
I figured out more-or-less how to do it: just extended the draw method in my class like so:
Thanks to Blue Ether over at the Cocos2D site for the heads-up:
http://www.cocos2d-iphone.org/forum/topic/21718?replies=5#post-120691
您可以尝试一些简单的方法,例如这里的方法。它使用实际的 CGRect 结构,而不是 UIView 和 CLayer。
You can try something simple like this method here. This uses an actual CGRect structure as oppose to a UIView and CLayer.
很快,这很容易。您可以从 CGRect 构造 BezierPath:
In swift, it's easy. You can construct a BezierPath from a CGRect: