菜鸟教程小白 发表于 2022-12-12 18:04:02

ios - 如何获取自定义 UITableViewCell 以获取用户对首选文本大小的更改?


                                            <p><p>我正在开发一个简单的应用程序来在表格 View 中显示项目。如果我从 <code>tableView:cellForRowAtIndexPath</code> 返回一个普通的 <code>UITableViewCell</code> 对象:</p>

<pre><code>static NSString *cellIdentifier = @&#34;EmailCell&#34;;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
    cellIdentifier];

if (!cell) {
    cell = [ initWithStyle:UITableViewCellStyleDefault
      reuseIdentifier:@&#34;EmailCell&#34;];
}

cell.textLabel.font = ;
</code></pre>

<p>...然后与动态文本的交互按预期工作;如果用户转到 <code>Settings |一般 |文本大小</code>,更改 slider 值,然后返回我的应用程序,所有可见单元格立即更新自己以使用新的字体大小。</p>

<p>但是,如果我返回 UITableViewCell 的自定义子类,其中 XIB 包含设置为使用文本样式而不是系统字体的 <code>UILabel</code>,则动态文本无法正常工作.这是我用来将 XIB 分配给 <code>viewDidLoad</code> 中的表的代码:</p>

<pre><code>[self.table registerNib:[UINib nibWithNibName:@&#34;EmailCell&#34;
                                           bundle:]
   forCellReuseIdentifier:@&#34;EmailCell&#34;];
</code></pre>

<p>然后是 <code>tableView:cellForRowAtIndexPath:</code></p> 中的这段代码

<pre><code>static NSString *cellIdentifier = @&#34;EmailCell&#34;;
EmailCell *cell = (EmailCell *)[tableView
    dequeueReusableCellWithIdentifier:cellIdentifier];
</code></pre>

<p>当我第一次运行应用程序时,可见单元格的文本大小与用户选择的首选文本大小相匹配。但是,如果我然后转到设置并更改该大小,然后返回我的应用程序,则所有可见单元格都会保留以前的文本大小。如果我然后向上滚动,我将看到两个显示新(正确)文本大小的单元格,但其余的仍然是旧大小。如果我停止并重新启动应用程序,所有单元格现在都会以新的(正确的)文本大小显示。</p>

<p>在我看来,tableview 将先前大小的单元格保留在队列中,并且不会自动更新其字体大小以响应用户对首选文本大小的更改。但是我不明白为什么当队列包含普通的非子类 <code>UITableViewCell</code> 实例时,tableview <em>确实</em> 会自动进行此更改。有什么方法可以在不重新启动应用程序的情况下使其工作(或不重新创建 <code>UITableView</code> 实例,从而清空队列)?有没有办法以编程方式(合法地)清除这个队列?</p>

<p><strong>编辑:</strong>如果有人对这个问题感兴趣,我的临时解决方案是编写一个通用实用程序方法来创建一个新的 tableview,复制原始 tableview 中的所有相关属性(包括已注册的单元类),然后将新的替换为旧的。由于这是一个新表,它会生成包含新文本大小的排队单元的全新实例。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>现在在 iOS 10 中为您处理。</p>

<p> <a href="http://useyourloaf.com/blog/auto-adjusting-fonts-for-dynamic-type/" rel="noreferrer noopener nofollow">http://useyourloaf.com/blog/auto-adjusting-fonts-for-dynamic-type/</a> </p>

<p>将标签上的 <code>adjustsFontForContentSizeCategory</code> 设置为 <code>YES</code>/<code>true</code>,当文本大小偏好发生变化时,它会自动调整大小。</p ></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何获取自定义 UITableViewCell 以获取用户对首选文本大小的更改?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21173838/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21173838/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何获取自定义 UITableViewCell 以获取用户对首选文本大小的更改?