2012-04-02 3 views

ответ

80

CGRectIntegral конвертировать любые десятичные значения их целочисленных эквивалентов
см изображение может быть вы можете понять enter image description here

Как я могу это исправить?

frame = CGRectIntegral(frame); 

-ИЛИ-

myTextView.frame = CGRectIntegral(myTextView.frame); 

увидеть это for more information of CGRectIntegral

+1

Изображение слева немного нечеткое, потому что кадр установлен на границе пикселя. Так что происхождение - это что-то вроде 20.5, 8.5. CGRectIntegral привязывает его обратно к 20, 8. – ariopolis

+3

Если вы хотите, чтобы размытые изображения были выделены фиолетовым в симуляторе iOS, выберите «Отладка»> «Цветные несоответствующие изображения». Таким образом, вам не придется косоглазиться повсюду, чтобы выяснить, какие вещи размыты. – JoJo

+0

Важно добавить: CGRectIntegral предназначен для заполнения/рисования пиксельных буферов. Строковые фигуры центрированы вокруг своих координат, поэтому вам действительно понадобятся не интегральные (например, 0,5 на 1x экранах) координаты, чтобы они выглядели четкими. См. Здесь более подробное объяснение: http://orangejuiceliberationfront.com/are-your-rectangles-blurry-pale-and-have-rounded-corners/ – uliwitness

7

Одно конкретное применение заключается в фиксации кадров, которые не совпадают полностью с экранными пикселями.

Смотрите этот вопрос: UITextField blurred text

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

CGRectIntegral удалит дробную часть кадра, исправив эту проблему. Однако обратите внимание, что при отображении сетчатки значение кадра .5 выравнивается по пикселям, но CGRectIntgral все равно удалит дробную часть.

13

CGRectIntegral Метод используется для создания целочисленного прямоугольника. Я хочу сказать, предположим, что если вы вычисляете фрейм в приложении, вы можете получить значение фрейма в float.

Установка значения float как кадра для некоторого UIElement как UILabel заставит текст выглядеть размытым. Чтобы избежать этого, мы используем CGRectIntegral Пожалуйста посылайте взгляд на примере ниже,

NSLog(@"%@",NSStringFromCGRect( CGRectIntegral(CGRectMake(0, 15.6, 16.1, 20.2)))); 

Это будет печатать, {0,15}, {17,21}.

Это объяснение содержится в файле заголовка.

/* Expand `rect' to the smallest rect containing it with integral origin and 
    size. */ 
Смежные вопросы