【问题标题】:Contents of UIPopoverController are blurryUIPopoverController 内容模糊
【发布时间】:2025-11-26 18:00:01
【问题描述】:

我在我的应用程序中展示了一个 UIPopoverController,但内容视图看起来有点模糊。

为了演示,我将内容视图控制器的第二个实例直接放在 self.view 上,通过比较很容易看出弹出框中的文本是模糊的。设备和模拟器都会出现此问题。

截图:

代码:

// ...    

// init the edit view controller
editSOViewController = [[EditViewController alloc] 
initForNewObjectWithDict:dict];

// init popover with editSOViewController
UIPopoverController *popover = [[UIPopoverController alloc] 
initWithContentViewController:editSOViewController];

// set size
navPopover.popoverContentSize = 
CGSizeMake(editSOViewController.view.frame.size.width, 
[editSOViewController heightForViewControllerInPopoverView]);  

// this is blurry
[popover presentPopoverFromRect:image.frame
                            inView:self.view
          permittedArrowDirections:UIPopoverArrowDirectionAny
                          animated:YES];

// this is clear
editViewController *test =
 [[EditViewController alloc] initForNewObjectWithDict:dict];
[self.view addSubview:test.view];

关于什么可能导致这种情况的任何想法?我认为 UIPopover 可能会稍微缩小视图,但我将这两个示例与图像编辑器对齐,并且大小没有差异(但弹出视图中明显的“模糊”)。

如果我使用 WEPopover (https://github.com/werner77/WEPopover/),我仍然会遇到同样的问题。

谢谢。

【问题讨论】:

  • 您是否对任何视图使用任何 -setCenter 方法?
  • NSLog image.frame 的值。它有小数部分吗?
  • @Anna Karenina CGRect f =floatingImageView.frame; NSLog(@"x: %f, y:%f, w:%f, h%f",f.origin.x, f.origin.y, f.size.width, f.size.height); x: 336.707764, y:450.813629, w:60.000000, h39.000000

标签: ios ipad blurry uipopover


【解决方案1】:

使用带有小数部分的帧值会导致在像素之间定位,从而导致模糊。

为避免这种情况,请使用 roundfloor 等函数将帧值设置为不带分数的数字。

【讨论】: