代码之家  ›  专栏  ›  技术社区  ›  nacho4d

没有箭头的超控器?

  •  14
  • nacho4d  · 技术社区  · 14 年前

    我想知道做一个没有箭头的超级控制器 事实上,我想模拟一下: Screenshot of the set-passcode screen from the iPad's System Preferences

    看到了吗

    • 没有箭头

    • 有一个标题不知何故位于UIPopoverController的扩展上边框内,而不像普通UIPopoverController那样位于其内部。

    我假设这并不是一个真正的UIPopoverController对象,但是我希望得到一些关于如何实现相同效果的建议(使用CoreGraphics?->特别是3D突出边框的半透明效果)和/或链接到某些源(如果以前有人这样做过)。

    伊格纳西奥

    编辑:

    我仍然在寻找这些东西,并意识到即使在第三方应用程序正在使用 一个例子是:twitterrific for iPad,如图所示。 有人吗?把标题放在popovercontroller里太难看了。 alt text

    7 回复  |  直到 14 年前
        1
  •  4
  •   Community Dunja Lalic    7 年前

    尽管苹果是否会批准那些不带箭头的popover应用程序还存在一些疑问,但你可能想看看这个 post regarding arrows post regarding modal views .

        2
  •  20
  •   Raj    10 年前

    下面的方法对我来说很好(包括iOS7)

     [popoverController presentPopoverFromRect:CGRectMake(0, 0, 20, 20)
                                        inView:self.view 
                      permittedArrowDirections:NULL 
                                      animated:YES];
    
        3
  •  5
  •   Khawar    10 年前

    0 permittedArrowDirections 属性。

    [popoverController presentPopoverFromRect:YOUR_RECT
                                        inView:self.view 
                      permittedArrowDirections:0
                                      animated:YES];
    
        4
  •  1
  •   KingIsulgard    13 年前

        5
  •  1
  •   Robotbugs    11 年前

    上边框是通过在popover和显示的视图控制器之间放置导航控制器来生成的。

    换句话说,popover提供一个导航控制器,并且导航控制器的根视图控制器被设置为您的视图控制器。这将生成标题栏,并允许您使用 [self setTitle:@"My Title"] 并添加导航按钮。

        6
  •  1
  •   Shaun Budhram    11 年前

    您可以通过使用UINavigationController并将UIViewControllers添加到导航控制器来添加标题。设置UIViewController的“title”属性以显示标题。

    http://blog.teamtreehouse.com/customizing-the-design-of-uipopovercontroller

    简单实现示例(在本例中,mycustompopopooverbackgroundview是uipopopooverbackgroundview的子类):

    UIViewController *vCtrlr = [[UIViewController alloc] initWithNibName:nil bundle:nil];
    vCtrlr.title = @"My Title";
    self.navCtrlr = [[UINavigationController alloc] initWithRootViewController:vCtrlr];
    self.popCtrlr = [[UIPopoverController alloc] initWithContentViewController:_navCtrlr];
    _popCtrlr.popoverBackgroundViewClass = [MyCustomPopoverBGView class];
                [_popCtrlr presentPopoverFromRect:CGRectMake(0,
                                                             0,
                                                             320,
                                                             150)
                                           inView:self permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    
        7
  •  0
  •   Baljeet Singh    10 年前

    只需复制和粘贴下面的代码

    UIViewController *popovercontroller=[[UIViewController alloc] init];
    UIView *popoverView=[[UIView alloc] initWithFrame:CGRectMake(312,390, 400, 344)];
    popoverView.backgroundColor=[UIColor whiteColor];
    
    popovercontroller.contentSizeForViewInPopover=CGSizeMake(400, 300);
    
    
    
    UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 44, 400, 0)];
    [pickerView setTintColor:[UIColor blackColor]];
    [pickerView addTarget:self action:@selector(dueDateChanged:) forControlEvents:UIControlEventValueChanged];
    
    pickerView.datePickerMode = UIDatePickerModeDate;
    pickerView.hidden = NO;
    NSString *bs ; //= [NSString alloc];
    //    //NSDate *newDate = [NSData alloc];
    bs =  CurrentSelectedDate;
    if (bs.length >= 1) {
        NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init] ;
        //        //[dateFormatter setDateStyle:NSDateFormatterLongStyle];
        //        [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
        [dateFormatter setDateFormat:@"dd-MMM-yyyy"];
        // NSDate *myDate = [dateFormatter dateFromString: txtText.text];
        pickerView.date = [dateFormatter dateFromString: CurrentSelectedDate];
    
    }
    else
    {
        pickerView.date = [NSDate date];
    }
    [popoverView addSubview:pickerView];
    
    
    
    // pickerView.date = [dateFormatter dateFromString:txtText.text];
    UIToolbar *pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 400, 44)];
    pickerToolbar.barStyle = UIBarStyleDefault;
    pickerToolbar.barTintColor=[UIColor colorWithRed:150.0f/255.0f green:91.0f/255.0f blue:129.0f/255.0f alpha:1.0f];
    
    [pickerToolbar sizeToFit];
    self.navigationController.toolbar.barTintColor = [UIColor colorWithRed:150.0f/255.0f green:91.0f/255.0f blue:129.0f/255.0f alpha:1.0f];
    NSMutableArray *barItems = [[NSMutableArray alloc] init];
    
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:self action:nil];
    [barItems addObject:flexSpace];
    
    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed:)];
    doneBtn.tintColor=[UIColor whiteColor];
    [barItems addObject:doneBtn];
    
    UIBarButtonItem *cancelBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonPressed:)];
     cancelBtn.tintColor=[UIColor whiteColor];
    [barItems addObject:cancelBtn];
    
    [pickerToolbar setItems:barItems animated:YES];
    
    
    [popoverView addSubview:pickerToolbar];
    popovercontroller.view=popoverView;
    
    pickerViewPopup = [[UIPopoverController alloc] initWithContentViewController:popovercontroller];
    
    [pickerViewPopup presentPopoverFromRect:CGRectMake(312, 212, 400, 344) inView:self.view permittedArrowDirections:0 animated:YES];