Dynamically Mocking iOS Dynamic Type System Text Size (UIContentSizeCategory)

I'd like to easily test my app with different selections of system text size, including accessibility sizes. These can be set in the Settings app (Display & Brightness => Text Size or General => Accessibility => Larger Text). The only way I can find to currently do this is to go into Settings and change the value with the UI (edit: partial solution described below). This is slow and cumbersome. I suspect there's a way to dynamically alter it using private APIs, but I can't figure out how. Since my goal is to only use this for debugging, private API use and swizzling is fine (this code won't be

2021-06-13 06:39:57    分类:问答    ios   objective-c   uifont   iphone-privateapi   disassembly

NSAttributedString change style to bold without changing pointSize?

I am digging into NSAttributedStrings on iOS. I have a model that is returning a persons first and last name as NSAttributesString. (I don't know if it is a good idea to deal with attributed strings in models!?) I want the first name to be printed regular where as the last name should be printed in bold. What I don't want is to set a text size. All I found so far is this: - (NSAttributedString*)attributedName { NSMutableAttributedString* name = [[NSMutableAttributedString alloc] initWithString:self.name]; [name setAttributes:@{NSFontAttributeName : [UIFont boldSystemFontOfSize:[UIFont

2021-06-13 06:36:02    分类:问答    iphone   ios   ipad   uifont   nsattributedstring

你如何在 UIBarButtonItem 上设置字体大小?(How do you set the font size on a UIBarButtonItem?)

问题 我找不到在自定义UIBarButtonItem设置标题字体大小的UIBarButtonItem 。 我能想到的唯一方法是将其设置为图像,我想避免这种情况。 还有其他建议吗? 回答1 目标-C: NSUInteger fontSize = 20; UIFont *font = [UIFont boldSystemFontOfSize:fontSize]; NSDictionary *attributes = @{NSFontAttributeName: font}; UIBarButtonItem *item = [[UIBarButtonItem alloc] init]; [item setTitle:@"Some Text"]; [item setTitleTextAttributes:attributes forState:UIControlStateNormal]; self.navigationItem.rightBarButtonItem = item; 迅速: let fontSize:CGFloat = 20; let font:UIFont = UIFont.boldSystemFont(ofSize: fontSize); let attributes:[String : Any] = [NSFontAttributeName: font]; let

2021-06-12 23:28:29    分类:技术分享    ios   uibarbuttonitem   uifont

Font not loading in XCode

Well, I want to import a new Font to my application but without success. I have the Fonts provided by application key in my .plist , I have my font in the Item 0 as a String and the value AdelleBasic_Bold.otf, I have added that Font to my project, and I am trying to use it with: _myTextField.font = [UIFont fontWithName:@"Adelle Basic" size:15]; Adelle Basic is the header of the Font when I open it. I have also tried without any success: _myTextField.font = [UIFont fontWithName:@"AdelleBasic_Bold" size:15]; Any suggestion?

2021-06-12 09:45:45    分类:问答    iphone   objective-c   xcode   fonts   uifont

无法在 XCode 中为 UILabel 设置自定义字体(Unable to set custom font for the UILabel in XCode)

问题 我无法在 XCode 中为 UILabel 设置自定义字体。 这是我尝试过的: 下载“JennaSue”字体 -- http://www.dafont.com/jenna-sue.font 打开“支持文件”文件夹下的“app-info.plist” 使用“应用程序提供的字体”键在列表中添加新行在这个数组中添加“JennaSue.ttf” 在这样的代码中使用它: self.someLabel.font = [UIFont fontWithName:@"JennaSue" size:14]; 什么也没有发生——默认字体是可见的。 为什么? 我究竟做错了什么? 我该如何解决? 回答1 确保您的字体在捆绑资源中。 出于某种原因,Xcode 大部分时间都没有正确导入自定义字体: 我有字体工作: 示例代码:这里 回答2 转到您项目的info.plist文件, 右键单击并选择Add row , 在新行中键入Fonts provided by application , 键入所需的字体名称作为该键的项目。 将字体文件拖放到项目中, 将其应用于您想要的文本: someLabel.font = [UIFont fontWithName:@"JennaSue" size: 12.0]; 我想你已经错过了第 5 步。 更新:在执行第 5 步时,记得检查将实际文件复制到项目目录的标记: 记得按

2021-06-12 07:27:02    分类:技术分享    ios   objective-c   cocoa-touch   uifont   info.plist

iOS:根据大小找到适合 UILabel 的正确字体大小(iOS: finding correct font size to fit in a UILabel depending on its size)

问题 我有一个UILabel其属性text我想将文本段落设置为使用NSString 。 我有一个数组,其中存储了代表文本段落的字符序列。 该段落不必完全适合/包含在此UILabel 。 如果段落没有结束,我将转到下一个标签。 假设我有这个UILabel 160 X 240 的矩形大小,我怎么能确定正确的字体大小以便很好地填充UILabel这个字符串? 是否有根据屏幕上矩形大小计算字体大小的数学方法? 例如: UILabel *aLabel = [[UIlabel alloc] initwithFrame(CGRect){{0, 0}, 160, 240}]; aLabel.font = [UIFont fontWithName:@"Courier New" size:<???>]; //(font unit in points) NSMutableString *aString = [[NSMutableString alloc] init]; //The following tries to fit the character one by one within the label rect based on //the width and height of the UILabel by appending String int index = 0; for(int x = 0

2021-06-11 13:19:08    分类:技术分享    ios   nsstring   core-text   uifont

替换 ios 7 中弃用的 sizeWithFont:minFontSIze:actualFontSize(Replace the deprecation sizeWithFont:minFontSIze:actualFontSize in ios 7)

问题 在 iOS 6 中,我使用了这种方法: [self.handText sizeWithFont:font minFontSize:10.0f actualFontSize:&maxFontSize forWidth:handWidth/2 lineBreakMode:UILineBreakModeClip]; xcode 5 说'sizeWithFont:minFontSIze:actualFontSize:forWidth:lineBreakMode:' is deprecated:first deprecated in iOS 7 现在我是这样实现的: [self.handText sizeWithAttributes:@{NSFontAttributeName:font} minFontSize:10.0f actualFontSize:&maxFontSize forWidth:handWidth/2 lineBreakMode:NSLineBreakByClipping]; 这里 xcode 抛出另一个警告说: 'Instance method -sizeWithAttributed:minFontSize:forWidth:lineBreakMode:'not found(return type defaults to 'id') 任何人都可以帮我解决这个警告。

2021-06-11 08:21:02    分类:技术分享    iphone   ios7   uifont

UITextView 字体为零(UITextView font is nil)

问题 我在故事板中创建了一个字体大小为 14 的 UITextView,并将其连接到我的 ViewController 的 detailDescriptionLabel 属性。 此代码在 viewDidLoad 中: self.detailDescriptionLabel.font=[UIFont systemFontOfSize:10]; NSLog(@"text is %@; font is %@", self.detailDescriptionLabel.text, self.detailDescriptionLabel.font); 控制台输出如下: text is Lorem Ipsum; font is (null) 为什么字体设置为nil? setFont: 正在工作; 字体确实缩小了。 我想获得字体,所以在一个手势之后我可以在字体上调用 lineHeight。 这样,我可以找出哪一行被以下代码点击: int line = [tap locationInView:tap.view].y / self.detailDescriptionLabel.font.lineHeight; 在这里,字体也是零。 line设置为-2147483648,这显然不是我想要的。 回答1 尝试在 Interface Builder 中选中此UITextView的“可选”复选框。

2021-06-10 22:53:10    分类:技术分享    ios   objective-c   fonts   uitextview   uifont

如何从 iOS 设置检测动态字体大小的变化?(How to detect Dynamic Font size changes from iOS Settings?)

问题 在设置-> 常规-> 文字大小中,更改文字大小后,我必须退出我自己的应用程序才能将大小应用于 [UIFont preferredFontForTextStyle:..] 是否有委托或通知通知我的应用程序重新应用新尺寸? 更新:我尝试了以下但有趣的是,字体大小将在我 BG 并启动应用程序 TWICE 后应用。 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fromBg:) name:UIApplicationDidBecomeActiveNotification object:nil]; } -(void) fromBg:(NSNotification *)noti{ self.headline1.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline]; self.subHeadline.font = [UIFont preferredFontForTextStyle

2021-06-10 19:29:34    分类:技术分享    ios   uifont

在 iOS UILabel 上设置 BOLD 字体(Setting BOLD font on iOS UILabel)

问题 我已经使用界面生成器为 UILabel 中的文本分配了大小为 14 的“Helvetica”自定义字体。 我在多个地方重复使用相同的标签,但在某些地方我必须以粗体显示文本。 有什么方法可以指定使现有字体加粗而不是再次创建整个 UIFont 吗? 这就是我现在所做的: myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14]; 回答1 更新: 从 iOS 8 开始,不再需要弄乱字体名称。 而是查看使用UIFontDescriptorSymbolicTraits较新答案:此处和此处。 myLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:14]; 如果你想以编程方式设置它,你必须检查 iOS 是否支持粗体,通常粗体或斜体的格式为 FontName-Bold、FontName-Italic、FontName-BoldItalic。 现在,写一个粗体函数 -(void)boldFontForLabel:(UILabel *)label{ UIFont *currentFont = label.font; UIFont *newFont = [UIFont fontWithName:[NSString stringWithFormat:@"%@-Bold"

2021-06-10 19:02:49    分类:技术分享    ios   objective-c   fonts   uifont