将图像显示为弹出框

Posted

技术标签:

【中文标题】将图像显示为弹出框【英文标题】:Display image as a popover 【发布时间】:2013-02-12 09:51:00 【问题描述】:

我想在UIPopoverArrowDirectionLeft 上显示图像。如何在单击按钮时将图像显示为弹出窗口?

【问题讨论】:

【参考方案1】:

我假设您的意思是会打开一个弹出屏幕,其中包含一个图像。 这是如何做到的,只需以编程方式将图像添加到弹出视图中,或者更好的是,直接在界面生成器中将图像添加到 MyPopOverView XIB

- (IBAction)showPopover:(id)sender

    if(![popoverController isPopoverVisible]) 
    myPopOver = [[MyPopOverView alloc] initWithNibName:@"MyPopOverView" bundle:nil];
    popoverController = [[UIPopoverController alloc] initWithContentViewController:myPopOver] ;

     // THE IMAGE
    UIImageView *icon = [[UIImageView alloc] initWithImage:[UIImage   imageNamed:@"popoverImage.png"]];

    [popoverController addsubview:icon];

    [popoverController setPopoverContentSize:CGSizeMake(350.0f, 500.0f)];
    [popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

     else 
        [popoverController dismissPopoverAnimated:YES];
    

【讨论】:

[popoverController addsubview:icon];我无法将子视图添加到弹出框控制器 尝试通过界面生成器添加它【参考方案2】:

实现此场景的另一种方法是根据您的需求制作自定义 uiview,并在其中设置要显示为弹出框的图像。并在您想要显示弹出框时显示它。

【讨论】:

【参考方案3】:

像 WEPopOverController 一样使用自定义 popOverViewController。它包含一些属性来更改弹出箭头图像等。

http://www.cocoacontrols.com/controls/wepopover

- (WEPopoverContainerViewProperties *)defaultContainerViewProperties 
    WEPopoverContainerViewProperties *ret = [[WEPopoverContainerViewProperties new] autorelease];

    CGSize imageSize = CGSizeMake(30.0f, 30.0f);
    NSString *bgImageName = @"tri123.png";//@"round-rect-box.png";
    CGFloat bgMargin = 2.0;
    CGFloat contentMargin = 2.0;

    ret.leftBgMargin = bgMargin;
    ret.rightBgMargin = bgMargin;
    ret.topBgMargin = bgMargin;
    ret.bottomBgMargin = bgMargin;
    ret.leftBgCapSize = imageSize.width/2;
    ret.topBgCapSize = imageSize.height/2;
    ret.bgImageName = bgImageName;
    ret.leftContentMargin = contentMargin;
    ret.rightContentMargin = contentMargin;
    ret.topContentMargin = contentMargin;
    ret.bottomContentMargin = contentMargin;
    ret.arrowMargin = 1.0;
    ret.upArrowImageName = @"popoverArrowUpSimple.png";
    ret.downArrowImageName = @"tri2.png";   // Customize your Image
    ret.leftArrowImageName = @"popoverArrowLeftSimple.png";
    ret.rightArrowImageName = @"popoverArrowRightSimple.png";
    return ret;

【讨论】:

以上是关于将图像显示为弹出框的主要内容,如果未能解决你的问题,请参考以下文章

将视图控制器显示为弹出窗口-iOS8

在通用应用程序中,如何将模态视图转换或重用为弹出框?

iOS 从任何地方将 UIViewController 显示为弹出窗口

在 Swift 中创建自定义 UIView 并显示为弹出窗口

当应用程序在后台使用 Firebase 时,使推送通知显示为弹出窗口

没有箭头无法定位弹出框