旋转ViewController时移动UIView对象

时间:2011-12-06 21:47:28

标签: iphone uiview

我有一个自定义的UIView,我用于UITableView标头。我在代码中创建它。 (我基本上遵循WWDC 2010的TVAnimationGestures)。对于从左侧偏移一些的UI元素,它在任一方向上看起来都很好。但是,如果我想要一个偏离右手大小的UILabel,我不知道该怎么办。如果我在IB,我会使用弹簧/支柱。但不知道如何在代码中这样做。感谢。

2 个答案:

答案 0 :(得分:0)

IB中的

spring / struts是autoresizingMask的GUI界面:

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW6

对于右对齐,您希望在首次创建时使用正确的偏移量定位标签,并​​将autoresizingMask设置为UIViewAutoresizingFlexibleLeftMargin(以及您想要的任何其他)。

答案 1 :(得分:0)

一种简单的方法是在视图中实现一个方法,根据UIInterfaceOrientation放置它的子视图。

然后,当检测到旋转时,您可以从UIViewController调用此方法。

例如:

在YourView.h中

@interface YourView : UIView {

}

// Public API
- (void)placeWidgetsForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;

@end

在YourView.m中

#import "YourView.h"

@implementation YourView

...

#pragma mark -
#pragma mark Public API

- (void)placeWidgetsForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Change frames of subviews according to orientation in here
}

@end

然后在YourController.m

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    YourView *theView = (YourView *) self.view; // Or where ever your view is
    [theView placeWidgetsForInterfaceOrientation:toInterfaceOrientation];
}