UIScrollView - 滚动时内容超出范围

Sai*_*ail 4 objective-c uiscrollview ios

我在界面构建器中设计了这样的scrollview

在此输入图像描述

这里看起来不错.但不幸的是,当我在模拟器或设备上运行它时

它成为了

在此输入图像描述

scrollview中的内容在scrollview本身外部展开,即使在包含此scrollView的UIView外部也是如此.

在我的viewDidLoad(面板是scrollView的容器)

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    CGFloat adjustPanelHeight = [PTTScreenScaleUtil getAdjustHeight:self.panel.frame.size.height];
    CGRect panelRect = self.panel.frame;
    panelRect.size.height = adjustPanelHeight;
    self.panel.frame = panelRect;

    UIImage *image = [UIImage imageNamed:@"panel-background"];
    UIGraphicsBeginImageContext(self.panel.frame.size);
    [image drawInRect:CGRectMake(0, 0, self.panel.frame.size.width, adjustPanelHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [self.panel setBackgroundColor:[UIColor colorWithPatternImage:newImage]];

    NSLog(@"scrollView Height : %f", self.scrollView.frame.size.height);
    NSLog(@"scrollView contentSize Height : %f", self.scrollView.contentSize.height);
//    CGRect scrollViewRect = self.scrollView.frame;
//    CGRect scrollViewContentRect = self.scrollView.frame;
//    NSLog(@"ScrollView Height Before : %f , After : %f", self.scrollView.frame.size.height, [PTTScreenScaleUtil getAdjustHeight:self.scrollView.frame.size.height]);
//    scrollViewRect.size.width = 280;
//    scrollViewRect.size.height = [PTTScreenScaleUtil getAdjustHeight:270];
//    self.scrollView.frame = scrollViewRect;
//    [self.detailsLabel sizeToFit];
    UIView *view = [[self.scrollView subviews] objectAtIndex:0];
//    [view sizeToFit];
//    [self.scrollView setContentMode:UIViewContentModeScaleAspectFit];
//    NSLog(@"ContentSize Height : %f", view.frame.size.height);
//    scrollViewContentRect.size.height = view.frame.size.height;
    NSLog(@"Bounds : %f", view.bounds.size.height);
    self.scrollView.frame = CGRectMake(10, 10, 280, 270);
    self.scrollView.contentSize = CGSizeMake(280, 500);
    NSLog(@"Frame Height %f", self.scrollView.frame.size.height);
    //[self.scrollView setContentSize: CGSizeMake(280, 1000)];

    CGRect termBtnRect = self.termBtn.frame;
    CGRect mailBtnRect = self.mailBtn.frame;
    CGRect twitterBtnRect = self.twitterBtn.frame;
    CGRect fbBtnRect = self.fbBtn.frame;
    termBtnRect.origin.y = adjustPanelHeight - 10 - termBtnRect.size.height;
    mailBtnRect.origin.y = adjustPanelHeight - 10 - termBtnRect.size.height;
    twitterBtnRect.origin.y = adjustPanelHeight - 10 - termBtnRect.size.height;
    fbBtnRect.origin.y = adjustPanelHeight - 10 - termBtnRect.size.height;
    self.termBtn.frame = termBtnRect;
    self.mailBtn.frame = mailBtnRect;
    self.twitterBtn.frame = twitterBtnRect;
    self.fbBtn.frame = fbBtnRect;
}
Run Code Online (Sandbox Code Playgroud)

所有日志返回270.0

PS.滚动条是正确的,即使内容走到外面但滚动条工作正常(保留在滚动视图的框架中,如在界面构建器中安排)我不知道如何解决这个问题.有人帮我请.

谢谢.

Sai*_*ail 14

通过在界面构建器中创建新的视图控制器并使用仔细和宾果重做相同的过程来解决它.有用.

当我比较两个视图控制器时,我意识到错误的一个UIScrollView剪辑子视图未被选中.检查时问题解决了.

  • 显然在UISCrollView上设置剪辑子视图就可以了.谢谢你的回答. (2认同)