我有一个UIView的子类,我使用drawInRect:withFont:lineBreakMode:alignment:
方法绘制一个NSString对象。
不幸的是,当我更改设备的方向时,例如从纵向模式到横向模式,文本不会被正确重绘,但会根据我的意图进行缩放和扭曲。
我该如何解决这个问题?
答案 0 :(得分:4)
这是Core Animation动画转换的一部分。拍摄视图的快照,然后拉伸/移动到新位置。
有很多方法可以解决这个问题。首先你可以试试这个:
self.contentMode = UIViewContentModeRedraw;
这可能就是您所需要的,并且会告诉Core Animation重绘您的内容而不是使用快照。如果您仍有问题,可以尝试定义拉伸而不是文本的“可伸缩”区域。
例如,如果您知道视图的垂直切片从不存在任何文本,则可以将内容拉伸定义在该小部分中,并且只在那里进行任何拉伸,希望保持文本完整。< / p>
CGFloat stretchStartX = 25.0f;
CGFloat stretchEndX = 30.0f;
/* Content stretch values are from 0.0-1.0, as a percentage of the view bounds */
self.contentStretch = CGRectMake(stretchStartX / self.bounds.size.width,
0.0f,
stretchEndX / self.bounds.size.width,
1.0f);
这会导致您的视图仅在x值25和30之间拉伸。