Удалить границу для UIPopoverController - PullRequest
1 голос
/ 17 января 2011

У меня есть требование, при котором я должен отображать пользовательскую границу для всплывающего окна UIPopoverController вместо границы по умолчанию «Черная тема».Возможно ли это?

Я не могу использовать черную рамку по умолчанию, поскольку она не подходит для цветовой темы приложения.

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

Ожидание предложений.

Спасибо, Радж

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Решено это с помощью UIView, а также путем переопределения hitTest в основном представлении rootViewController, чтобы увидеть, находится ли точка касания вне этого представления. Если это так, событие будет использовано для отклонения нового всплывающего окна, в противном случае событие будет перенаправлено в новый всплывающий элемент.

0 голосов
/ 19 июля 2013

добавить popview как подпредставление, код:

//!you must define the dimBackgroundView and set view in head file firstly, 

//action for a button,to add set view as a subview
 - (IBAction)openSetting:(id)sender {

    if(!dimBackgroundView)
    {
       dimBackgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
    }
    dimBackgroundView.backgroundColor = [[UIColor clearColor] colorWithAlphaComponent:0.0];

    [self.view addSubview:dimBackgroundView];

    SettingViewController *set = [[SettingViewController alloc]initWithNibName:nil bundle:nil];
    [set.view setFrame:CGRectMake(120, 50, 400, 600)];
    self.setView = set;

    //add shadow
    set.view.layer.shadowOffset = CGSizeMake(3, 3);
    set.view.layer.shadowColor = [UIColor colorWithRed:70.0/255.0 green:70.0/255.0 blue:80.0/255.0 alpha:1.0].CGColor;
    set.view.layer.shadowOpacity = 0.8;

    [self.view addSubview:set.view];
}
//check touch position, if touch position is outside of setview, remove it from superview
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event{
    UITouch *touch = [[event allTouches] anyObject];
    if ([self.setView.view superview] && self.dimBackgroundView == touch.view) {
        [self.dimBackgroundView removeFromSuperview];
        [self.setView.view removeFromSuperview];
    }
}
...