Содержимое UIPopoverController размыто

#ios #ipad #blurry #uipopover

#iOS #iPad #размыто #uipopover

Вопрос:

Я представляю UIPopoverController в своем приложении, но представление содержимого выглядит слегка размытым.

Чтобы продемонстрировать, я поместил второй экземпляр content view controller непосредственно в 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 /).

Спасибо.

Комментарии:

1. Используете ли вы какой-либо метод setCenter для любого представления?

2. NSLog значение image.frame. Есть ли в нем какие-либо дробные части?

3.@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

Ответ №1:

Использование значений кадра с дробными частями приводит к размещению между пикселями, что приводит к размытости.

Чтобы избежать этого, установите значения фрейма в числа без дробей, используя такие функции, как round или floor .