我有一個或多或少具有弧形的貝塞爾路徑,事情是我希望用戶能夠在弧內點擊(其中它可能是一個更清晰的門),但不在弧上。但我不能這樣做,就像弧線內的空間也是貝塞爾路徑的一部分,但唯一的一點是它是透明的。貝塞爾路徑的透明區域不允許用戶交互
它創建BezierPath的代碼如下:
- (UIImageView*)drawBezierPath {
//// Bezier Drawing
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
[bezierPath moveToPoint: CGPointMake(55.5, 643.5)];
[bezierPath addLineToPoint: CGPointMake(55.5, 417)];
[bezierPath addLineToPoint: CGPointMake(63, 399)];
[bezierPath addLineToPoint: CGPointMake(69.5, 381.5)];
[bezierPath addLineToPoint: CGPointMake(79, 363.5)];
[bezierPath addLineToPoint: CGPointMake(91, 346)];
[bezierPath addLineToPoint: CGPointMake(102, 331)];
[bezierPath addLineToPoint: CGPointMake(114.5, 314.5)];
[bezierPath addLineToPoint: CGPointMake(127.5, 301.5)];
[bezierPath addLineToPoint: CGPointMake(142.5, 286)];
[bezierPath addLineToPoint: CGPointMake(156.5, 273.5)];
[bezierPath addLineToPoint: CGPointMake(171, 260)];
[bezierPath addLineToPoint: CGPointMake(189.5, 247.5)];
[bezierPath addLineToPoint: CGPointMake(207.5, 234.5)];
[bezierPath addLineToPoint: CGPointMake(229.5, 222.5)];
[bezierPath addLineToPoint: CGPointMake(250, 211)];
[bezierPath addLineToPoint: CGPointMake(272.5, 202)];
[bezierPath addLineToPoint: CGPointMake(295.5, 194)];
[bezierPath addLineToPoint: CGPointMake(321, 186.5)];
[bezierPath addLineToPoint: CGPointMake(349, 180.5)];
[bezierPath addLineToPoint: CGPointMake(375, 179)];
[bezierPath addLineToPoint: CGPointMake(398, 177.5)];
[bezierPath addLineToPoint: CGPointMake(424.5, 177.5)];
[bezierPath addLineToPoint: CGPointMake(448.5, 180.5)];
[bezierPath addLineToPoint: CGPointMake(473, 184.5)];
[bezierPath addLineToPoint: CGPointMake(498.5, 192)];
[bezierPath addLineToPoint: CGPointMake(521.5, 200)];
[bezierPath addLineToPoint: CGPointMake(544.5, 209.5)];
[bezierPath addLineToPoint: CGPointMake(565.5, 220)];
[bezierPath addLineToPoint: CGPointMake(584, 231)];
[bezierPath addLineToPoint: CGPointMake(603, 244)];
[bezierPath addLineToPoint: CGPointMake(623.5, 259)];
[bezierPath addLineToPoint: CGPointMake(640.5, 274)];
[bezierPath addLineToPoint: CGPointMake(657.5, 290.5)];
[bezierPath addLineToPoint: CGPointMake(673, 308)];
[bezierPath addLineToPoint: CGPointMake(688.5, 327)];
[bezierPath addLineToPoint: CGPointMake(702.5, 346.5)];
[bezierPath addLineToPoint: CGPointMake(715, 368)];
[bezierPath addLineToPoint: CGPointMake(727, 392.5)];
[bezierPath addLineToPoint: CGPointMake(736.5, 414.5)];
[bezierPath addLineToPoint: CGPointMake(736.5, 644)];
[bezierPath addLineToPoint: CGPointMake(789.5, 644.5)];
[bezierPath addLineToPoint: CGPointMake(789.5, 1)];
[bezierPath addLineToPoint: CGPointMake(2.5, 1)];
[bezierPath addLineToPoint: CGPointMake(2, 645)];
[bezierPath addLineToPoint: CGPointMake(55.5, 643.5)];
[bezierPath closePath];
[[UIColor blackColor] setFill];
[bezierPath fill];
[[UIColor blackColor] setStroke];
bezierPath.lineWidth = 1;
[bezierPath stroke];
UIGraphicsBeginImageContext(CGSizeMake(800, 800));
//this gets the graphic context
CGContextRef context = UIGraphicsGetCurrentContext();
//you can stroke and/or fill
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor);
[bezierPath fill];
[bezierPath stroke];
//now get the image from the context
UIImage *bezierImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *bezierImageView = [[UIImageView alloc]initWithImage:bezierImage];
bezierImageView.alpha = 0;
bezierImageView.frame = CGRectMake(115, 92, bezierImageView.frame.size.width, bezierImageView.frame.size.height);
return bezierImageView;
}
在該方法我創建bezierPath和它在一個UIImageView保存它添加到另一個視圖。
我以爲bezierPath用於繪製奇怪的形式,只佔用那種形式的空間,但現在我不知道該怎麼想!
有關於此的任何想法?謝謝!
你想做什麼?你想找BezierPath嗎? – 2013-04-24 19:17:47
我希望bezierPath不允許觸及其區域,但是在其餘空間中是的。 – diegomen 2013-04-25 13:31:22