Как я могу определить dpi на ipad mini?

У меня есть приложение для ipad с некоторыми довольно маленькими точками касания, которые едва приемлемы на 10-дюймовом экране обычного ipad. Я бы хотел получить разрешение dpi для устройства, чтобы я мог масштабировать размер мелких элементов для мини и любых будущих мини, которые будут выпущены.

2 ответа

DPI составляет 163 пикселя на дюйм (ppi):

http://www.apple.com/ipad-mini/specs/

Вы не можете получить это программно, поэтому вам нужно будет сохранить как константу в вашем коде.

Вы не можете получить значение dpi (или, точнее, ppi) напрямую, потому что вам нужно знать количество миллиметров (или дюймов) физического экрана.
Сначала вы должны определить, является ли это iPad mini или нет, а затем вы сохраняете значение dpi для каждого (пока известного) устройства в своем приложении.

На момент написания этого кода этот iPad обнаруживает:

#include <sys/utsname.h>
NSString *machineName()
{
    struct utsname systemInfo;
    if (uname(&systemInfo) < 0) {
        return nil;
    } else {
        return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
    }
}

// detects iPad mini by machine id
+ (BOOL) isIpadMini {

    NSString *machName = machineName();
    if (machName == nil) return NO;

    BOOL isMini = NO;
    if (    [machName isEqualToString:@"iPad2,5"]
         || [machName isEqualToString:@"iPad2,6"]
         || [machName isEqualToString:@"iPad2,7"])
    {
        isMini = YES;
    }
    return isMini;
}

Он не защищен от будущего, потому что новый идентификатор машины может быть введен позже, но метода будущего не существует.
Если это iPad mini, используйте 163 dpi, в противном случае используйте ссылки выше в комментарии, чтобы рассчитать dpi для iPhone и iPad.

Другие вопросы по тегам