【问题标题】:UIscrollview resize problemUIscrollview调整大小问题
【发布时间】:2011-06-08 05:31:03
【问题描述】:

我有一个带有文本字段和标签的滚动视图作为其子视图,对于两个文本字段我想显示 UIpickerview。 例如:当用户触摸 textfield11 时,我想显示一个从屏幕底部向上滑动的选择器,此时我也想更改滚动视图的高度,但它不起作用。

CGRect scrollframe = scrollView.frame;
    NSLog(@"scrollframe.height=%f, pick height=%f",scrollframe.size.height, pick.frame.size.height);
    scrollframe.size.height -= pick.frame.size.height;
    [UIView beginAnimations:@"start" context:NULL];
    [UIView setAnimationDuration:0.2];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [scrollView setFrame:scrollframe];
    NSLog(@"scroll height = %f",scrollframe.size.height);
    NSLog(@"scrollview height = %f", scrollView.frame.size.height);
    [pick setFrame:CGRectOffset([pick frame], 0, -220)];
    [UIView commitAnimations];

这是控制台日志..

2011-06-08 10:43:31.316 AESDirect[281:207] scrollframe.height=416.000000,选择高度=216.000000 2011-06-08 10:43:31.316 AESDirect [281:207] 滚动高度 = 200.000000 2011-06-08 10:43:31.317 AESDirect [281:207] 滚动视图高度 = 200.000000

【问题讨论】:

  • 为什么要增加滚动视图的高度?如果您想要向上移动其他字段,您可以更改滚动视图的 contentoffset
  • 我不是想增加它的高度,我想降低它的高度,就像我们想要防止键盘隐藏文本字段时所做的那样
  • 只有你可以改变 contentOffset 而不是高度。设置滚动视图的内容偏移量,字段将相应上升
  • @problemChild 嗨,选择器是否在制作动画时向上移动?
  • @sripriya 是的,选择器在制作动画时正在移动。

标签: iphone objective-c ios ios4 uiscrollview


【解决方案1】:

这可能会对您有所帮助:

[scrollframe setContentOffset:CGPointMake(scrollframe.contentOffset.x, scrollframe.contentOffset.y-100)];

您可以通过调用pickerView 的相同函数调用上述代码。所以这样你就不必改变滚动视图的高度了。

那么你的代码应该是这样的:

       UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[contentView setBackgroundColor:[UIColor clearColor]];
self.view = contentView;

UIScrollView *horizontalScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[horizontalScroll setBackgroundColor:[UIColor blackColor]];
[horizontalScroll setDelegate:self];
[contentView addSubview:horizontalScroll];

UIPickerView *tempPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 220, 320, 100)];
[tempPicker setHidden:YES];
[contentView addSubview:tempPicker];

在 .h 文件中将它们全部设为全局,然后您将更好地控制它们的行为。您的选择器视图与滚动视图的其他项目一起移动,因为您可能已将选择器视图添加为滚动视图的子视图。

【讨论】:

  • 问题仍然存在。顺便说一句,滚动视图内容大小是(320,665),当我点击原始状态文本字段时,选择器向上滑动(屏幕截图 1),但滚动视图的高度没有减少。所以如果选择器是可见的并且我正在滚动选择器也在滚动方向上移动,就像所有其他子视图都在移动一样
  • 评论这一行:[pick setFrame:CGRectOffset([pick frame], 0, -220)];在您的代码中并在创建时最初隐藏选择器视图,并且仅在需要时将其可见性更改为是。不要改变它的偏移量。
  • 感谢朋友们的回复,感谢 Prabh 和 gypsa 解决了我的问题。实际上我将它添加为滚动视图的子视图。 scrollview 是由客户端在 IB 中创建的,他已将 UIscrollview 加载到主窗口,我认为他正在使用 UIView。很抱歉浪费您的时间。感谢 7KV&、SriPriya、Prabh 和 gypsa 为您提供帮助。
【解决方案2】:

您必须在视图中而不是在滚动视图中更改内容大小和内容偏移量以及选取器视图,因为如果您在滚动视图中添加它,您将无法从选取器视图中选择值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 2021-09-20
    • 2011-07-05
    • 2013-04-15
    相关资源
    最近更新 更多