【问题标题】:How to auto rotate your own custom views?如何自动旋转您自己的自定义视图?
【发布时间】:2010-09-14 20:26:47
【问题描述】:

我了解到,获得优雅旋转的最佳方法是在要调整大小或移动的视图上设置自动旋转遮罩。如果您使用像 UILabel 这样的 SDK 视图,这可以正常工作,但是如果您有自己的自定义视图并使用 drawRect 方法,则它不会优雅地旋转。事实上,唯一发生的事情是它会拉伸你在 drawRect 中绘制的任何内容。

我尝试在旋转前后都重新绘制,但它并没有给我带来平滑的旋转。

我查看了一个 UITextField 以慢动作自动旋转(灵活宽度),它在旋转过程中完美地跟随边缘。这就是我希望我的视图做的事情,那么我该怎么做呢?我的视图在旋转之前或之后跳转到正确的位置。

【问题讨论】:

    标签: iphone uiview autorotate


    【解决方案1】:

    以下行将使您的 UIView 仅拉伸中间像素。如果这不是您想要的行为,我建议您阅读 contentStretch 的文档以了解如何操作 CGRect 的值。

    [self setContentStretch:CGRectMake(0.5, 0.5, 0.0, 0.0)];
    

    【讨论】:

      【解决方案2】:

      我猜你正在查看的UITextField 至少有三个子视图,一个显示字段边界的左大写,一个显示右大写,一个显示中间,自动调整大小的掩码为“灵活分别为“右边距”、“灵活左边距”和“灵活宽度”。如果您设置了类似的自定义视图,并确保其 autoresizesSubviews 属性设置为 YES,那么您应该获得与文本字段相同的平滑调整大小。

      【讨论】:

      • 不完全是我所期待的答案,也不完全是我希望的答案,但话虽如此,我认为您的解决方案会很好。 :) 我有一个问题。我有一个可拉伸的 UIImage,我正在视图的矩形中绘制它,我不能轻易地使 UIImage 成为三个子视图。此外,我不认为我可以接受这个作为我的答案,因为重组你的视图以使用子视图而不是 drawRect 是我非常清楚的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      相关资源
      最近更新 更多