正在積極我有簡單的UIView層次:的iOS:UIView的層次結構:使地圖視圖的UIView
container View:
→ Map View
→ Custom View
我的自定義視圖部分重疊的地圖視圖。我可以看到地圖,但我無法與地圖互動縮放,滾動等。
如何在同一時間部分地圖重疊和交互存檔? 隨意問我,如果你不明白的東西。
編輯
我想禁用黑色區域互動,但允許在我UIView用黑色覆蓋區域的中心圓,即互動。
正在積極我有簡單的UIView層次:的iOS:UIView的層次結構:使地圖視圖的UIView
container View:
→ Map View
→ Custom View
我的自定義視圖部分重疊的地圖視圖。我可以看到地圖,但我無法與地圖互動縮放,滾動等。
如何在同一時間部分地圖重疊和交互存檔? 隨意問我,如果你不明白的東西。
編輯
我想禁用黑色區域互動,但允許在我UIView用黑色覆蓋區域的中心圓,即互動。
我假設你有這樣的事情:
您希望能觸摸到紅色區域,並觸摸地圖,當黃色區域,但它正在被黃色子視圖封鎖?
如果是這樣,子類黃子視圖並覆蓋-pointInside:方法,它允許你指定一個觸摸點是否會與觀點碰撞,或退回到它後面的視圖。
- (BOOL) pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
return [[UIBezierPath bezierPathWithOvalInRect:self.bounds] containsPoint:point];
}
我只想與紅色區域進行交互。我會盡力實現這一點。 –
哇,像一個魅力的這項工作,但我不明白爲什麼我們做出這樣的矩形,爲什麼這個號碼?爲什麼他們的工作:) –
@flinth我的號碼只是一個例子,它只允許在一個100x30平方的交互。您應該更改代碼以最適合您的觸摸區域。 – SomeGuy
如果視圖僅部分地覆蓋它下面的觀點,敷個面膜告訴IOS該
例如從XBPageCurl
- (void)applyCornerMaskAsNeeded {
//
//create mask
//
UIImage *cornerImage = [UIImage imageNamed:@"corner_view_mask.png"]; //this is black//white/alpha
CGRect b = self.layer.bounds;
CGRect rtCornerRect=CGRectZero;
UIGraphicsBeginImageContextWithOptions(b.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
//white bg
CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGContextFillRect(context, b);
//draw corner image mask
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, cornerImage.size.height);
CGContextConcatCTM(context, flipVertical);
CGContextSetBlendMode(context, kCGBlendModeCopy);
rtCornerRect = [self cornerRectFor:XBPageDragViewCornerTopRight withSize:cornerImage.size.width];
CGContextDrawImage(context, rtCornerRect, cornerImage.CGImage);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//
//apply mask
//
CALayer *l = [CALayer layer];
l.frame = b;
l.contents = (id)image.CGImage;
l.name = @"XBPageDragViewCornersMask";
[self.layer setMask:l];
self.layer.masksToBounds = YES;
}
我github上叉另一個例子是在蘋果文檔,但這個應該已經是相當清楚的:
屏蔽簡單地防止在某些地區的用戶交互似乎有點矯枉過正我 – SomeGuy
@ Daij-Djan謝謝您的回答 –
@SomeGuy好,如果它是一個簡單的「rectange」(或其他簡單的形式),那麼pointInside也許是更好的,但是如果你有更多...複雜partitial覆蓋Id言口罩更好 –
什麼是MapView類和customview相對於continer視圖幀? – Apurv
將遮罩應用於您的自定義視圖 –
@Apurv與容器視圖邊界相同 –