【问题标题】:How to set popover view controller frame while it is already displayed in iPad?如何在 iPad 中显示弹出视图控制器框架时设置它?
【发布时间】:2014-10-20 13:56:39
【问题描述】:

我在表单中显示了视图控制器,在按钮单击弹出框时出现,弹出视图控制器中有搜索栏,当开始在搜索栏键盘中输入时出现,并且当父视图控制器显示在表单中时,拉到顶部根据其默认行为,因此需要相应地设置popover的框架,如何在popover的框架已经存在时设置它? 提前致谢。

【问题讨论】:

    标签: ios objective-c ipad frame uipopovercontroller


    【解决方案1】:

    不久前我在UIViewController 上创建了一个类别

    UIViewController+PopOver.h

    #import <UIKit/UIKit.h>
    
    @interface UIViewController (PopOver)
    
    - (void) forcePopoverSize;
    - (void) forcePopoverSizeWithWidth:(float) width andHeight:(float) height;
    
    @end
    

    UIViewController+PopOver.m

    #import "UIViewController+PopOver.h"
    
    @implementation UIViewController (PopOver)
    
    - (void) forcePopoverSize
    {
        //    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
        CGSize currentSetSizeForPopover = CGSizeMake(320.0f, 330.0f);
        CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
        self.preferredContentSize = fakeMomentarySize;
        self.preferredContentSize = currentSetSizeForPopover;
    }
    
    - (void) forcePopoverSizeWithWidth:(float) width andHeight:(float) height
    {
        //    CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
        CGSize currentSetSizeForPopover = CGSizeMake(width, height);
        CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
        self.preferredContentSize = fakeMomentarySize;
        self.preferredContentSize = currentSetSizeForPopover;
    }
    
    @end
    

    然后在您的UIViewController 中,您可以调用[self forcePopoverSizeWithWidth:752.0f andHeight:300.0f]; f.e.

    让我知道它是否有效

    【讨论】:

    • contentSizeForViewInPopover 这是 ios 7 不推荐使用的方法,可以使用不推荐使用的方法吗?
    • 我把答案改成符合iOS7中的新方法,请立即尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多