Подтвердить что ты не робот

Можем ли мы иметь эффект CGRectIntegral на iOS 6 с автоматической компоновкой кадров?

iOS 6 автомат очень удобен. Однако автогенерируемые кадры могут иметь нецелые значения. Как заставить целочисленный вывод для конечных позиций и размеров кадра с помощью автоматической компоновки?

4b9b3361

Ответ 1

AutoLayout умнее, чем вы думаете.

Хотя верно, что автогенерируемые кадры могут иметь дробные значения, они округляются в соответствии с соотношением пикселей устройства. На устройствах с дисплеем Retina (2x) допускаются доли 0,5. На старых устройствах, похоже, нет никаких дробных значений.

Это означает, что вы всегда получите идеальный макет.

Понадобилось некоторое время, чтобы понять это.:)

Ответ 2

Я не могу ответить на ваш вопрос, если вы не принимаете no, как ответ.

Мне приходилось сталкиваться с подобной проблемой при использовании макета вручную, а не с автоматической компоновкой. Мое решение может быть полезным для кого-то.

Этот код будет округлять координаты до масштаба экрана. Другими словами, при стандартном отображении на целые числа, на дисплее Retina на половинки (0,5; 1; 1,5;...).

CGFloat roundToScreen(CGFloat value) {
    CGFloat scale = [[UIScreen mainScreen] scale];
    CGFloat result = round(value * scale) / scale;
    // example value: 3.61
    // on standard display: 4
    // on Retina display: 3.5
    return result;
}

Вот некоторые вспомогательные функции для CGRect, CGPoint и CGSize: Gist on GitHub