2015-02-01 3 views
0

Я пытаюсь размер MKMapView следующим образом:Как обрезать MKMapView (или любой UIView) в пользовательскую форму?

Map view with curved arc at the top

Элементы должны быть в состоянии появиться за дуги в верхней части, так что кажется, что точка зрения не является квадратом. Я знаю, что это должно быть возможно с CALayer, но, возможно, кто-то это сделал раньше?

ответ

0

Это должно быть вполне возможно, если вы поместите свой MKMapView в UIView, а затем примените к нему маску.

Вот очень простой пример (!):

enter image description here

Все, что я сделал это поставить свою карту в UIView под названием «mapContainer» и добавил маску к нему с помощью этого:

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    CGRect rect = CGRectInset(self.view.frame, 70, 70); 
    UIView* newView = [[UIView alloc] initWithFrame:rect]; 
    newView.layer.cornerRadius = 55.0; 
    newView.backgroundColor = [UIColor redColor]; 

    self.mapContainer.layer.mask = newView.layer; 
} 

И вы можете добавить рамку к нему ...

enter image description here

..с еще несколько строк ...

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    CGRect rect = CGRectInset(self.view.frame, 70, 70); 
    UIView* newView = [[UIView alloc] initWithFrame:rect]; 
    newView.layer.cornerRadius = 55.0; 
    newView.backgroundColor = [UIColor redColor]; 

    UIView* borderView = [[UIView alloc] initWithFrame:rect]; 
    borderView.backgroundColor = [UIColor clearColor]; 
    borderView.layer.cornerRadius = 55.0; 
    borderView.layer.borderWidth = 3.0; 
    borderView.layer.borderColor = [[UIColor redColor] CGColor]; 
    [self.mapContainer addSubview:borderView]; 
    [self.mapContainer bringSubviewToFront:borderView]; 

    self.mapContainer.layer.mask = newView.layer; 
} 

Я надеюсь, что это указывает на вас в правильном направлении.

В отличие от Apple Maps.

;-)

Смежные вопросы