Как отобразить текущую версию проекта моего Приложения пользователю?

Как насчет Graphics.MeasureString, с перегрузкой, которая принимает строку, шрифт и макс. ширину? Это возвращается SizeF, таким образом, Вы можете круглое округление Height.

        using(Graphics g = CreateGraphics()) {
            SizeF size = g.MeasureString(text, lbl.Font, 495);
            lbl.Height = (int) Math.Ceiling(size.Height);
            lbl.Text = text;
        }
18
задан Glorfindel 27 April 2019 в 13:05
поделиться

3 ответа

После дальнейшего поиска и тестирования я сам нашел решение.

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSLog(@"%i Keys:  %@", [infoDictionary count],
             [[infoDictionary allKeys] componentsJoinedByString: @" ,"]);

Этот фрагмент дал мне следующий результат:

20 ключей: NSBundleResolvedPath, CFBundleVersion , NSBundleInitialPath , CFBundleIdentifier, NSMainNibFile, CFBundleIconFile, CFBundleInfoPlistURL, CFBundleExecutable, DTSDKName, UIStatusBarStyle, CFBundleDevelopmentRegion, DTPlatformName, CFBundleInfoDictionaryVersion, CFBundleSupportedPlatforms, CFBundleExecutablePath, CFBundleDisplayName, LSRequiresIPhoneOS, CFBundlePackageType, CFBundleSignature, CFBundleName

Таким образом, решение так же просто, как:

NSString *version =[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"];

Однако, это не Текущая версия проекта, как показано на снимке экрана, а версия пакета файла plist.

25
ответ дан 30 November 2019 в 06:26
поделиться

Look into your Info.plist file which should have keys like CFBundleVersion and CFBundleShortVersionString

12
ответ дан 30 November 2019 в 06:26
поделиться

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

Теперь вы можете перенести некоторые элементы из окна Build Info в info.plist, используя специальные идентификаторы, такие как $ {VERSION_INFO_PREFIX} или другой токен. Жетоны станут доступны, если вы нажмете на любой из элементов в левой части окна, которое вы включили выше. Например, нажмите на слово «Текущая версия проекта» и скопируйте токен, который вы видите внизу, «CURRENT_PROJECT_VERSION». Затем перейдите в свой файл plist и добавьте запись. Дайте ему любое имя или " Теперь это значение доступно вам из вашего приложения программно. Конечно, теперь кто-то должен ввести это значение в соответствующее место в окне Build Info или в другом месте. Может быть проще управлять этим и подобными полями в файле info.plist. Вам решать, как вы хотите справиться с этими вещами.

Вот как я могу получить информацию о версии из моего info.plist:

+ (NSString *) getAppVersionNumber;
{
    NSString    *myVersion,
                *buildNum,
                *versText;

    myVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    buildNum = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey];
    if (myVersion) {
        if (buildNum)
            versText = [NSString stringWithFormat:@"Version: %@ (%@)", myVersion, buildNum];
        else
            versText = [NSString stringWithFormat:@"Version: %@", myVersion];
    }
    else if (buildNum)
        versText = [NSString stringWithFormat:@"Version: %@", buildNum];
    NSLog(versText);
    return versText;
}
7
ответ дан 30 November 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: