更新:我最终将下面的代码实现到自己的方法中,然后从viewDidLayoutSubviews
和willAnimateRotationToInterfaceOrientation
调用它。从viewDidAppear
(按照建议)执行此操作不会在从segue返回时调整视图大小。
我在故事板中定义了UIView,我在UIViewController上用于标题视图。我的代码中有一个常量,所有标题视图都高达80个单位。我在故事板标题视图中有一个标记200.我以为我可以使用此标记来获取视图,修改底层CGRect的高度,然后将标题视图重新设置为修改后的CGRect。但这似乎并不影响身高。我错过了什么?
- (void)viewDidLoad
{
UIView *header = [self.view viewWithTag:200];
CGRect hrect = [header frame];
hrect.size.height = HEADER_HEIGHT;
[header setFrame:hrect];
...
答案 0 :(得分:3)
尝试在viewDidAppear
上执行此操作,然后调用
[self setNeedsLayout]
答案 1 :(得分: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];
...
另外,请确保您在故事板中定义的标记也是200
而不是@“200”。
希望这有帮助!