0

更新:我最终将下面的代码实现到它自己的方法中,然后从viewDidLayoutSubviewsand调用它willAnimateRotationToInterfaceOrientation。从 segue 返回时,从viewDidAppear(如建议的那样)执行此操作不会调整视图的大小。


我在故事板中定义了一个 UIView,用于我的 UIViewController 上的标题视图。我的代码中有一个常量,所有标题视图的高度均为 80 个单位。我在storyboard header view 200上有一个标签,我想我可以用这个标签来获取视图,修改底层CGRect的高度,然后将header view重新设置为修改后的CGRect。然而,这似乎并不影响身高。我错过了什么?

- (void)viewDidLoad
{
   UIView *header = [self.view viewWithTag:200];
   CGRect hrect = [header frame];
   hrect.size.height = HEADER_HEIGHT;
   [header setFrame:hrect];
 ...
4

2 回答 2

3

尝试这样做viewDidAppear然后打电话

[self setNeedsLayout]
于 2013-10-25T16:44:40.517 回答
1

问题是您将标签用作 NSString。该tag属性是一个 NSInteger。尝试执行以下操作:

- (void)viewDidLoad
{
    UIView *header = [self.view viewWithTag:200];// give the tag as an int
    CGRect hrect = [header frame];
    hrect.size.height = HEADER_HEIGHT;
    [header setFrame:hrect];
...

此外,请确保您在 Storyboard 中定义的标签也是200而不是 @"200"。

希望这可以帮助!

于 2013-10-25T16:45:47.713 回答