iPhone - UIView方向改变

时间:2010-07-20 07:35:48

标签: iphone cocoa-touch uiview orientation

我有一个UIView的子类,我使用drawInRect:withFont:lineBreakMode:alignment:方法绘制一个NSString对象。

不幸的是,当我更改设备的方向时,例如从纵向模式到横向模式,文本不会被正确重绘,但会根据我的意图进行缩放和扭曲。

我该如何解决这个问题?

1 个答案:

答案 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之间拉伸。