我想在我的MapView屏幕上添加一個顏色遮罩(沒有座標,我想將其顯示在我的所有mapView上),並將控件保留在此mapView上。
我聽說過MKOverlay,但我不知道如何使用它的所有地圖,並沒有使用座標因爲我希望它在所有的地圖屏幕上。如何在地圖上添加透明遮罩查看
是否有人有想法?
我想在我的MapView屏幕上添加一個顏色遮罩(沒有座標,我想將其顯示在我的所有mapView上),並將控件保留在此mapView上。
我聽說過MKOverlay,但我不知道如何使用它的所有地圖,並沒有使用座標因爲我希望它在所有的地圖屏幕上。如何在地圖上添加透明遮罩查看
是否有人有想法?
您可以使用-hitTest:withEvent:
方法創建過濾器視圖。當您觸摸過濾器視圖時,它將在它返回的視圖上起作用:
返回包含指定點的視圖層次結構(包括其自身)中接收器的最遠後代。
假設你一個名爲的MKMapView mapView
和MapFilterView(從UIView的子類)被稱爲mapFilterView
,他們兩人都是mainView
子視圖,除了層(mapFilterView
是mapView
)。這裏有一個片斷代碼,將描述清楚:
MapFilterView.h
...
@interface MapFilterView : UIView {
MKMapView * mapView_;
}
@property (nonatomic, retain) MKMapView * mapView;
@end
MapFilterView.m
#import "MapFilterView.h"
@implementation MapFilterView
@synthesize mapView = mapView_;
- (void)dealloc {
self.mapView = nil;
[super dealloc];
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView * child = [super hitTest:point withEvent:event];
if (child == self)
return mapView_;
return child;
}
並在您的主視圖控制器(在-viewDidLoad:
假設):
// Create the map view
...
[self.view addSubview:self.mapView];
// Create the map filter view
mapFilterView_ = [[MapFilterView alloc] initWithFrame:mapFilterViewFrame];
mapFilterView_.mapView = self.mapView;
[self.view addSubview:mapFilterView_];
此代碼只是一個示例,您最好自己測試一下。希望這會有所幫助! :)
您可以覆蓋地圖視圖頂部的視圖。它不應該是地圖視圖的子視圖,而應該是其超級視圖的子視圖 - 但在地圖視圖的前方。如果疊加視圖具有半透明背景顏色,我們可以看穿它。如果疊加層視圖禁用了用戶交互(userInteractionEnabled
= NO),則觸摸將進入地圖視圖 - 就好像覆蓋視圖不存在一樣,這正是您所期望的。換句話說,它看起來好像地圖本身被半透明的顏色遮住了。
這與地圖視圖或mkoverlay無關。你應該相應地修復你的標籤。這只是一個關於用色偏或其他視覺修改來覆蓋任何視圖的問題。
你的問題實際上沒有任何意義。你想做什麼? –
你的意思是像一個過濾器? – Vertig0
@PatricioIgnacioFariaValdivi是的,我的意思是過濾器 對不起,法語試圖說英語聽起來不是很好 – james075