#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
.