【问题标题】:how to get a popover frame of specified width and height in ipad如何在ipad中获得指定宽度和高度的弹出框
【发布时间】:2011-11-28 07:25:45
【问题描述】:

我在我的应用程序中使用了弹出视图,当我浏览示例时,我发现了如何创建弹出视图,但在示例代码中,弹出视图正在显示到整个页面。当我点击按钮时,我想要指定宽度和高度的弹出框。

-(IBAction) settingsGo:(id) sender{

NSLog(@"Go");

if (self.popoverController == nil)

{
    PopOver *lang = [[PopOver alloc]
                   initWithNibName:@"PopOver" bundle:[NSBundle mainBundle]];

    UIPopoverController *popOver = 
    [[UIPopoverController alloc]initWithContentViewController:lang];

    popOver.delegate = self;
    [lang release];

    self.popoverController = popOver;
    [popOver release];
}



CGRect popoverRect = [self.view convertRect:[button frame]fromView:[button superview]];
popoverRect.size.width = MIN(popoverRect.size.width, 50);

[self. popoverController 
 presentPopoverFromRect:popoverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

那么我应该在上面的代码中进行哪些更改以获得指定宽度和高度大小的框架。

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    Account 是要显示的类。 popAccount 是它的实例。 buttonA 是点击后会显示 popOver 的按钮。

    -(void)viewDidLoad
    
    {
        popAccount = [[Account alloc] init];
    
            //[popAccount setDelegate:self];
    
            popOverControllerA = [[UIPopoverController alloc] initWithContentViewController:popAccount];
    
            popOverControllerA.popoverContentSize = CGSizeMake(200, 200);   
    
     }   
        -(IBAction)togglePopOverControllerA {
    
            if ([popOverControllerA isPopoverVisible]) {
    
                [popOverControllerA dismissPopoverAnimated:YES];
    
            } else {
    
                [popOverControllerA presentPopoverFromRect:buttonA.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
            }
    
        }
    

    进一步询问任何问题..

    【讨论】:

    • CGRect popoverRect = [self.view convertRect:[button frame]fromView:[button superview]]; popoverRect.size.width = MIN(popoverRect.size.width, 50);这两行代码让我没有设置框架位置。当我使用此代码时 popOverControllerA.popoverContentSize = CGSizeMake(200, 200);仍然将框架放置在左角
    • [popOverControllerA presentPopoverFromRect:buttonA.frame inView:self.view allowedArrowDirections:UIPopoverArrowDirectionAny animated:YES];将使此弹出框从 buttonA 框架中弹出
    • 是的,我添加了它的工作正常,但是当我点击按钮时,我的按钮在右上角,框架显示在左上角。我希望它显示在按钮下方
    • 可能是代表导致问题,所以现在我编辑了代码并删除了 [popAccount setDelegate:self];它工作正常。
    【解决方案2】:

    popoverController.popoverContentSize 设置为您想要的任何大小。

    【讨论】:

    • 谢谢你,如果我想要特定位置的框架我应该在上面的代码中添加什么代码?
    • popOverControllerA.popoverContentSize = CGSizeMake(200, 200);
    【解决方案3】:

    在根视图中定位

    CGRect frame= CGRectMake(0,0, 0, 0);
    
    [self.myPickerPopover presentPopoverFromRect:frame inView:self.view permittedArrowDirections:0 animated:NO];
    

    在弹出窗口中显示的视图控制器内容中调整大小

    -(void)viewDidLoad
    
    {
    
    
      self.contentSizeForViewInPopover = CGSizeMake(750,880);
    
    
     }
    

    【讨论】:

      猜你喜欢
      • 2020-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多