Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:更改视图';机器坏了_Ios_Uiscrollview - Fatal编程技术网

iOS:更改视图';机器坏了

iOS:更改视图';机器坏了,ios,uiscrollview,Ios,Uiscrollview,我的视图控制器中有一个UIScrollview,我希望动态更改其高度。代码如下: - (void)loadView { ... self.myScrollView = [[UIScrollView alloc] initWithFrame:CGRectZero]; self.myScrollView.delegate = self; self.myScrollView.bounces = YES; self.myScrollView.showsHorizo

我的视图控制器中有一个UIScrollview,我希望动态更改其高度。代码如下:

- (void)loadView
{
    ...
    self.myScrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
    self.myScrollView.delegate = self;
    self.myScrollView.bounces = YES;
    self.myScrollView.showsHorizontalScrollIndicator = NO;
    ...
}

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    self.myScrollView.frame = CGRectMake(0.0f, 0.0f, 300.0f, 300.0f);    
}

- (void)videoTapGesture:(id)sender
{
    self.myScrollView.frame = CGRectMake(0.0f, 0.0f, 300.0f, 600.0f);    
}

我想在用户点击时动态更改滚动视图的高度,但什么也没发生。我没有使用故事板,所以自动布局应该不是问题。为什么滚动视图没有改变

设置断点或将NSLog消息添加到您的VideoTap手势和viewDidLayoutSubviews方法中,并在ViedoTap手势之后查找对viewDidLayoutSubviews的调用。很可能是发生了大小更改,但布局会立即覆盖它,因此不会产生任何影响

与您的操作方式不同,保存一个具有所需大小的变量,这样您的代码中就不会出现关于大小的混淆,如下所示:

@property (nonatomic) CGFloat desiredHeight;

- (void)loadView {
    // ... your existing code, then this line:
    self.desiredHeight = 300;
}

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    self.waveformScrollView.frame = CGRectMake(0.0f, 0.0f, 300.0f, self.desiredHeight);    
}

- (void)videoTapGesture:(id)sender
{
    self.desiredHeight = 600;
    [self setNeedsLayout];
}

更改视图的帧时,会调用
viewdilayoutsubviews
,因此您再次将帧重置为不正确的大小。

您有
self.myScrollView
self.waveormscrollview
。为什么我们要相信这些是同一件事?而且,你不能证明它们中的任何一个实际上都在接口中。它们应该是一样的。在我的原始代码中,它是waveformScrollView。我只是觉得没有“波形”这个词会更容易理解。你是对的。新大小已被重写回旧大小。是的,它已重置回旧大小