- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我创建了一个面板,其中包含一些 subview ,并使用 NSLayoutConstraint
来实现定位。
然后我会在 UIPopoverController
中显示它。在设置它之前,我会调用 [UIView layoutIfNeeded]
命令强制它调整自己的大小(整体大小基于其中的图像大小,可以是不同大小)。
PhotoDisplayPanel *panel = [[PhotoDisplayPanel alloc] initWithPhoto:cell.photo isAddPhoto:cell.isAddPhoto];
DLog(@"BEFORE | panel.frame: %@", panel);
[self.view addSubview:panel];
DLog(@"MIDDLE | panel.frame: %@", panel);
[panel layoutIfNeeded];
DLog(@"AFTER | panel.frame: %@", panel);
日志:
DEBUG | -[LoginViewController viewDidLoad] | BEFORE | panel.frame: <PhotoDisplayPanel: 0x7878a3f0; frame = (0 0; 0 0); layer = <CALayer: 0x7878a7e0>>
DEBUG | -[LoginViewController viewDidLoad] | MIDDLE | panel.frame: <PhotoDisplayPanel: 0x7878a3f0; frame = (0 0; 0 0); layer = <CALayer: 0x7878a7e0>>
DEBUG | -[LoginViewController viewDidLoad] | AFTER | panel.frame: <PhotoDisplayPanel: 0x7878a3f0; frame = (-358 -245; 578 289); layer = <CALayer: 0x7878a7e0>>
以前,我会在将其添加到 View 之前添加 [panel layoutIfNeeded]
调用。这很好用。但是在 iOS 8.1 中,他们改变了 layoutIfNeeded
的工作方式,如果您在将我的面板添加到 View 之前调用它,它会崩溃并开始打破约束以使其正常工作。
我的问题是使用 UIPopoverController
,因为我不能调用 layoutIfNeeded
我的面板没有大小,所以它使用 popover 的默认大小:
虽然面板看起来像:
我创建了 UIPopoverController
,将面板设置为其 View ,然后将 preferedContentSize
属性设置为面板的大小:
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view = self.currentPanel;
viewController.preferredContentSize = CGSizeMake(self.currentPanel.frame.size.width, self.currentPanel.frame.size.height + 00);
由于面板还没有调整大小,所以它是 (0, 0)。
我现在的问题是,如何强制我的面板根据约束调整自身大小?
最佳答案
解决方案是根据您的约束计算 preferredContentSize。注意:您的约束必须固定(左/上/右/下)到 View Controller View ,以便能够计算 View 的总宽度/高度。
方法是,在您的 viewWillAppear 中添加这些行:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
CGSize resultSize = [self.view systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
self.preferredContentSize = resultSize;
}
关于ios - 自动布局和 UIPopoverController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128271/
如上所述,在 iOS8 中,[UIPopoverController presentPopoverFromRect] 不再适用于 [UIApplication sharedApplication].k
我有一个 UISearchBar。当用户触摸 UISearchBar 时,会显示一个包含结果的 UITableView 的 UIPopoverController。当用户输入时,结果就会出现。 我希望
我正在尝试创建一个如上所示的弹出窗口。 它可以是一个按钮或只有一个项目的 TableViewController。 我查看了很多教程,但它们似乎都比必要的复杂得多。 有没有办法在不创建新的 ViewC
有谁知道是否可以在 iPad 上为 UIPopOverController 设置透明背景? 我想在弹出框内放置一个半透明 View (因此希望弹出框本身具有透明背景)。 我认为这是不可能的……但我很想
如何“执行选择器”到uipopovercontroller的parentviewcontroller? 我有从uiviewcontroller中解放出来的uipopovercontroller,这个u
希望有办法做到这一点。希望只显示 View 周围的边框,顶部没有 40px 标题栏。可能吗? 最佳答案 已回答...我正在使用导航 Controller 初始化它。一旦我删除了它,我就没有得到标题栏。
我有一个通用应用程序。在 iPad 上,当按下注释图钉时,它会显示标注气泡。当我按下关闭按钮时,它会加载一个带有详细 View 的 uipopovercontroller。我想知道的是如何加载 uip
我想知道如何制作一个没有箭头的 UIPopoverController事实上我想模拟这样的事情: 看看 没有箭头 有一个标题以某种方式位于 UIPopoverController 的扩展顶部边框内部,
我有一个显示表格的 UIPopoverController。我使用 PresentFromBarButtonItem 方法。 我怎样才能给弹出窗口显示一个标题,UISpliter 做了多少列表? 最佳
我有一个问题,this question 的回答最多。 . 但是,我的任务略有不同。我想将 UIImageViews 从 UIPopover Controller 拖放到另一个 UIView,但弹出框
我正在以这种方式创建一个弹出框: popoverController = [[UIPopoverController alloc]initWithContentViewController:brows
我有一个 UIPopoverController由 TableView 组成。这个弹出式 Controller 显示得很好,我已经设置了委托(delegate) didSelectRowAtIndex
是否可以从第一个弹出窗口 UIButton 单击打开另一个 uipopovercontroller?如果是,那我该怎么做? 现在我正在使用给定的代码从 UIBarButtonItem 打开一个弹出窗口
我正在窗口内切换 View 。方向有时会混淆。 在其中一个窗口中,当我尝试显示应附加到工具栏按钮的弹出窗口时,它显示在屏幕上的位置。如果我物理地改变设备的方向,弹出窗口会在正确的位置重绘。如果我再次切
iOS 9 中 PopoverController 的正确代码是什么?在任何地方都可以找到此代码的正确代码? @IBAction func share(发送者:UIBarButtonItem){
我有一个普通的 UIPopoverController,它是这样制作的: -(IBAction)btKBIs_click:(id)sender { if(kbiPopOver != NULL)
我有一个按钮,当按下它时会显示一个 View Controller ,这是一个通用应用程序。 在 iPhone 上, View Controller 被推送到导航堆栈上。在 iPad 上,它显示在弹出
在 iOS 7 中,UIPopoverControllers 具有视差效果(前景悬停在背景之上)。 这在处于纵向模式的 UISplitViewController 中尤其难看。 线条不在同一水平面上。
我知道 UIPopOverController 可以提供标准下拉菜单,但我很好奇它是否可以提供动态下拉菜单。 动态下拉菜单将更进一步,单击列表中的任何项目都可以展开更多选项或执行某些其他操作,类似于文
我发现在呈现 UIPopoverController 时,并非呈现 View 中的所有控件都被禁用。具体来说,导航栏按钮(例如“后退”)仍然可选。我认为这是一个缺陷 - 它允许弹出窗口保留在屏幕上,而
我是一名优秀的程序员,十分优秀!