uiscrollview用于滚动非常非常高的页面

时间:2011-08-01 13:24:47

标签: uitextview

从上到下我有UIView,UIScrollView,UIImage,UILabel,UITextView和UIButton。

最顶层的UIScrollView背后的原因是整个垂直内容都会滚动。

我真正需要替代的是UITextView(第5版),因为UITextView是UIScrollView的子类。而这个替代品必须能容纳非常高的格式化文本列。

我不想要的是页面中间的可滚动对象;我希望整个页面可以滚动。

还有一件事......请注意,这个高大的文字栏下方有一个按钮。

John Love

3 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你不希望嵌套滚动。 所以设置yourTextView.scrollEnabled = NO; //以编程方式在笔尖中进行操作

另外,为了显示所有文本,将yourTextView框架高度设置为其内容高度:

    yourTextView.frame = CGRectMake(yourTextView.frame.origin.x, 
                                    yourTextView.frame.origin.y,
                                    yourTextView.frame.size.width,
                                    yourTextView.contentSize.height + (yourTextView.contentSize.width > yourTextView.frame.size.width ? (yourTextView.contentSize.width * yourTextView.contentSize.height / (yourTextView.contentSize.width - yourTextView.frame.size.width)) - yourTextView.contentSize.height :0)));

/*
If textView is dynamically filled, you have to check if yourTextView.contentSize.width is bigger than yourTextView.frame.size.width then add proportionally what is remaining to the height. 
*/

如果需要,最后更改按钮位置:

yourbutton.frame = CGRectMake(yourbutton.frame.origin.x, 
                                yourTextView.frame.origin.y + yourTextView.frame.size.height + 20, //If you want your button to be 20 point after your textView
                                yourbutton.frame.size.width,
                                yourbutton.frame.size.height);

希望能帮到你...

答案 1 :(得分:1)

谢谢!阿沙克和彭塔格。我想我最终不得不放弃并抛弃IB可以用于所有GUI的想法......

整个UIView包含一个UILabel,一个UIImage,一个UITextView和 最底层的UIButton。

这里的目标是使整个内容可滚动。

感谢stackoverflow.com上的你们:

  
      
  1. 使用IB,取消选中UITextView的“Scrolling Enabled”   因为它是UIScrollView的具体类型
  2.   
  3. 使用IB,将UIScrollView拖到UIView并匹配大小和   确保UIScrollView包含所有子视图
  4.   
  5. 制作UITextView height = its contentSize.height
  6.   
  7. 将UIButton移动到此UITextView
  8. 下方   

然后,感谢iphonedevsdk.com:

  
      
  1. 将最顶层UIScrollview的contentSize.height调整为   包括重新定位的UIButton的高度
  2.   

问题解决了!!!

答案 2 :(得分:0)

你的问题不是很具体,但我想你是在问如何制作一个不滚动的文本视图,并扩展以适应文本。您可以使用UILabel执行此操作,但这是一个多步骤的过程。如果禁用滚动并将contentSize设置为与帧尺寸匹配,则同样适用于UITextView。

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100,100,100,100)]; 
label.font = [UIFont systemFontOfSize:24];
NSString *yourTextString = @"your text";
CGSize maximumLabelSize = CGSizeMake(100, 500);
CGSize expectedLabelSize = [yourTextString sizeWithFont:label.font 
                    constrainedToSize:maximumLabelSize 
                    lineBreakMode:yourLabel.lineBreakMode];
CGRect labelFrame = label.frame;
labelFrame.size.width = expectedLabelSize.width;
labelFrame.size.height = expectedLabelSize.height;
label.frame = labelFrame;

然后从那里开始,使用标签的框架来设置按钮的位置及其下方的所有元素。