首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得一个UIView,当边界改变时,它显示文本的行为像UILabel一样?

如何获得一个UIView,当边界改变时,它显示文本的行为像UILabel一样?
EN

Stack Overflow用户
提问于 2010-10-16 08:26:43
回答 4查看 1.2K关注 0票数 3

我有一个UIView,需要用drawRect绘制文本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)drawRect:(CGRect)rect {
    ...
    [@"some text" drawAtPoint:somePoint withFont:someFont];
    ...
}

因为文本需要特殊的格式设置,所以我不能只使用UILabel。

它看起来很好直到我旋转设备。然后,我的自定义UIView的大小发生变化(在父视图的layoutSubviews方法中),文本在一个方向拉伸,另一个方向被压缩。

当我用UILabel替换视图时,文本看起来总是很棒,即使视图的界限发生了变化。

如何才能让我的观点显示出与UILabel相同的行为?

有些事情我已经研究过了,但还没有成功:

  • 将视图层的needsDisplayOnBoundsChange设置为YES。
  • 将视图的contentStretch设置为CGRectZero。
  • 在我的视图中调用setNeedsDisplay‘s layoutSubviews。

也许我做得不对。还有其他人碰到这个吗?

更新:,正如James的答案中所建议的,我将视图的contentMode属性设置为UIViewContentModeRedraw,这使我成为了其中的一部分。在动画结束时,文本现在看起来是正确的。但是,在动画开始时,文本会被压缩/拉伸以适应最终尺寸,然后在动画过程中得到未压缩/未拉伸的文本。UILabel的情况并非如此。

EN

回答 4

Stack Overflow用户

发布于 2010-10-16 08:56:52

尝试将视图的contentMode属性设置为UIViewContentModeRedraw

票数 5
EN

Stack Overflow用户

发布于 2011-01-03 13:14:53

这似乎是可行的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
self.contentMode = UIViewContentModeRedraw;
self.contentStretch = CGRectMake(1, 1, 0.5, 0.5);

然后确保右下角像素为背景色.为此,我在视图的内容周围放置了一个像素的填充。UILabel似乎没有一个像素的边界限制,所以它一定在做一些不同的事情。但据我所知,这也有同样的效果。

票数 2
EN

Stack Overflow用户

发布于 2011-01-04 03:17:09

Kevin创建了一些名为FontLabel的源代码。(code.google.com)

这方面的好处是,它对UILabel进行了子类,您可以使用自己的字体;)

//编辑:好的,我将更新我的答案以推荐子类UILabel "to get all the UILabel goodness" ^^

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3949711

复制
相关文章
UIview
序:本文翻译自苹果官方文档,自己想系统的了解每个控件的官方解释。只翻译了部分,详情见官方文档。
星宇大前端
2022/06/02
7170
iOS UI控件了解一下
5. UIView的操作方法 1)添加视图 UIView的addSubview:方法可以添加子视图,对于同一个视图的所有子视图来讲,后添加的子视图会把已加的子视图盖在下面。 UIView提供了其他添加视图的方法(详见下表):
用户5521279
2020/11/25
2.6K0
iOS UI控件了解一下
【IOS开发进阶系列】动画专题
http://doc.okbase.net/Hello_Hwc/archive/123447.html
江中散人_Jun
2023/10/16
5700
【IOS开发进阶系列】动画专题
iOS Core Animation:Advanced Techniques
到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能。但是Core Animation图层不仅仅能作用于图片和颜色而已。本章就会学习其他的一些图层类,进一步扩展使用Core Animation绘图的能力。
conanma
2021/09/02
1.9K0
设计模式之创建型模式
GoF的《设计模式》一书总结了面向对象软件中一些宝贵的设计经验,系统地对它们命名、解释和评价,并以编目分类的形式将它们展现出来,这就是广为流传的23个设计模式的由来。
Sheepy
2018/09/10
6650
设计模式之创建型模式
Ios常用第三方框架(一)
一.UI框架 下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件。 SVPullToRefresh - 下拉刷新控件。 MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新的文字说明。具体使用看“使用方法”。 (国人写) XHRefreshControl - XHRefreshControl 是一款高扩展性、低耦合度的下拉刷新、上提加载更多的组件。(国人写) CBStore
honey缘木鱼
2018/09/26
5.5K0
UILabel加载html文本
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53163142
用户1451823
2018/09/13
2.9K0
iOS滚动视图UIScrollView使用方法
滚动视图还满常见的,这里学习了一下基本所有的用法、属性设置和委托,单讲一个ScrollView也很简单,直接上代码远比一个个讲要清晰明了地多。
Cloudox
2021/11/23
1.6K0
iOS滚动视图UIScrollView使用方法
【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
项目创建流程 : ① 选择 Create a new Xcode project , ② 创建 Single View Application 项目 , ③ 设置项目信息 , ④ 设置代码路径并创建 ;
韩曙亮
2023/03/27
4K0
【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )
UILabel显示固定行数的问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53260997
用户1451823
2018/09/13
1.3K0
视觉效果 -- iOS Core Animation 系列三
本片文章前三章内容大家比较常用,后面的可能会不那么常用,前面的基础内容不想看了可以直接从第4段开始
Charlie_W
2018/10/19
1.1K0
视觉效果 -- iOS Core Animation 系列三
MyLayout&TangramKit 的重大升级!
MyLayout和TangramKit是一套基于frame之上的UI界面布局库的OC版本和Swift版本。目前最新版本升级为MyLayout1.7.0和TangramKit1.4.0。 ?OC1.7
欧阳大哥2013
2019/05/21
2.1K0
MyLayout&TangramKit 的重大升级!
《Motion Design for iOS》(十五)
通常情况下,iOS app中屏幕上的物体都是UIView对象。它们是矩形的并且有坐标和大小来定义它们在屏幕上的位置和尺寸。UIView是用来构建你的界面的UIKit Framework中基本的界面对象。每个视图都可能伴随着文本、形状或图片绘制。比如说,iOS app中的状态栏是一个长且瘦的视图,处于屏幕的顶端,并且状态栏目中的每个物体(时间、电池指示器、信号强度指示器等等)都是状态栏视图中的其它视图。
Cloudox
2021/11/23
8560
《Motion Design for iOS》(十五)
UILabel显示定时器文本的跳动问题解决方案
上面的gif图会发现在显示验证码计数时出现跳动和闪烁的问题。目前大多数用来实现定时器显示的控件都是UILabel。
欧阳大哥2013
2019/07/15
1.1K0
UILabel显示定时器文本的跳动问题解决方案
如何驱使行为改变 | 驱动变革
绝大多数工程师对于变革有种无力感。这种无力感源于这样的想法:我不是管理人员,没有足够的职权,无法改变自己的组织。当这种感觉足够强烈的时候,它作带来的挫败感会使我们失去进一步行动的能力。
ThoughtWorks
2019/05/05
7100
如何驱使行为改变 | 驱动变革
让 YAML 变得像它看起来一样简单
如果你曾经尝试过写 YAML,你可能一开始会对它看起来很容易感到高兴。乍一看,经常用于配置文件、Ansible 剧本和普通文件数据库的 YAML 看起来就像购物清单一样直观。然而,YAML 的结构中有很多细微的差别,它隐藏着一个危险的秘密:YAML 实际上是一种高度精确、结构化和令人惊讶的严格语言。好消息是,你只需要了解两件事就可以知道 YAML 的工作原理。
用户8639654
2021/10/11
5680
Cell 动态行高文字显示不全问题探索
使用的是”预估行高+自动布局“的方法实现动态行高(适用于 iOS7.0 以后系统)。
woopDast1
2021/02/07
2.3K0
Cell 动态行高文字显示不全问题探索
Cell 动态行高文字显示不全问题探索
使用的是”预估行高+自动布局“的方法实现动态行高(适用于 iOS7.0 以后系统)。
woopDast1
2021/02/25
1.9K0
Cell 动态行高文字显示不全问题探索
iOS 优化界面流畅的技巧
对象的创建会分配内存、调整属性、甚至还有读取文件等操作,比较消耗 CPU 资源。尽量用轻量的对象代替重量的对象,可以对性能有所优化。比如 CALayer 比 UIView 要轻量许多,那么不需要响应触摸事件的控件,用 CALayer 显示会更加合适。如果对象不涉及 UI 操作,则尽量放到后台线程去创建,但可惜的是包含有 CALayer 的控件,都只能在主线程创建和操作。通过 Storyboard 创建视图对象时,其资源消耗会比直接通过代码创建对象要大非常多,在性能敏感的界面里,Storyboard 并不是一个好的技术选择。
用户2491699
2018/08/02
1.5K0
如何像Elon一样演示你的模型
想必很多人都看过Elon在上古时期的演示手势控制的视频吧,那个时候他拿着leap motion,兴奋的讨论着设计、交互的未来。
UDM Lab
2020/06/16
4530

相似问题

控制台将UIView显示为null,但它的行为仍然像它存在一样。

13

当框架与UIView相交时,UIlabel文本颜色反转

40

如何像苹果一样突出显示UIView

75

使用UILabel文本蒙版显示UIView

30

怎样才能让UIView像CaLayer的边界一样工作?

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文