Как насчет 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;
}
После дальнейшего поиска и тестирования я сам нашел решение.
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.
Look into your Info.plist
file which should have keys like CFBundleVersion
and CFBundleShortVersionString
Эти элементы в информации о сборке недоступны для вашего созданного приложения. Это заполнители, которые вы могли бы вставить в свое приложение. В вашем приложении есть все, что вы помещаете, скажем, в папку 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;
}