iOS 6 автомат очень удобен. Однако автогенерируемые кадры могут иметь нецелые значения. Как заставить целочисленный вывод для конечных позиций и размеров кадра с помощью автоматической компоновки?
Можем ли мы иметь эффект CGRectIntegral на iOS 6 с автоматической компоновкой кадров?
Ответ 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