2014-08-26 3 views
0

У меня проблема. Я создал представление с прозрачным фоном и видом на центр (окна сообщения):iOS segue размывает текст

коробка называется iboShadowBox

enter image description here

В моем классе контроллера, я добавляю код для закругленных углов окно сообщения и добавление тени к нему.

И наконец я это делаю:

self.iboShadowView.center = self.view.center; 

к центру окна сообщения.

И клиент говорит, что текст размыт.

я исследовал текст с и без установки центра:

С заходящего центра:

enter image description here

без установки центра:

enter image description here

Левые без установки центр, справа с установочным центром

enter image description here

Вопрос в том, может ли установка центра центра вызвать размытие текста? И как это исправить?

EDIT:

Пробовал заменить это:

self.iboShadowView.center = self.view.center; 

с этим:

CGPoint center = self.view.center; 
CGFloat scale = [UIScreen mainScreen].scale; 
self.iboShadowView.center = CGPointMake(roundf(center.x * scale)/scale, roundf(center.y * scale)/scale); 

снова показывает пинг фон в отладить ... (а это значит, не помогло)

ответ

0

Возможно, что ваша точка центра приводит к тому, что текст появляется в позиции, не находящейся в пикселях. Эффект от этого заключается в том, что ваш ярлык визуализируется с более преувеличенным сглаживанием, отсюда немного более размытый вид.

Простой способ проверить эту теорию - запустить приложение в Симуляторе и выбрать Отладка> Цветные несоответствующие изображения из меню. Выделенная графика, не выровненная по пикселям, будет выделена пурпурной. Возможно, не обязательно, чтобы внешний вид был смещен, это может быть любой вид листа, ведущий к тексту, поэтому проверка того, что кадр внешнего вида выравнивается по пикселям, может оказаться недостаточным.

Способ устранения проблем, как это вручную пиксель выровнять кадр, например, с помощью функции, как это:

CGRect CGRectAlign(CGRect rect) 
{ 
    CGFloat scale = [UIScreen mainScreen].scale; 
    return CGRectMake(roundf(rect.origin.x * scale)/scale, 
         roundf(rect.origin.y * scale)/scale, 
         roundf(rect.size.width * scale)/scale, 
         roundf(rect.size.height * scale)/scale); 
} 
+0

Спасибо за you'r ответ о дебютировать. Проверено мое предположение: Когда я комментирую self.iboShadowView.center = self.view.центр; Текст не выделяется розовым на эмуляторе. Теперь мне просто нужно исправить это с помощью вашего кода – Cheese

+0

Не могли бы вы помочь мне с пониманием вашей функции? Это что-то вроде метода расширения в C#? Как использовать его, он пишет предупреждение: нет предыдущего прототипа для функции ... – Cheese

+0

проверить мое редактирование – Cheese

Смежные вопросы