2014-10-09 85 views
1

我有1 UIPageControl和1 UIScrollView。当我为UIPageControl设置约束时,我的UIScrollView无法滚动。这是我的代码:当在iOS中为UIPageControl添加约束时,UIScrollView不滚动

//set contentsize for uiscrollview 
[self.scrollView setContentSize:CGSizeMake(320, 1440)]; 

UIPageControl *imagePVControl = self.imagePVControl; 
[imagePVControl setTranslatesAutoresizingMaskIntoConstraints:NO]; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[imagePVControl]-0-|" 
                    options:0 
                    metrics:nil 
                    views:NSDictionaryOfVariableBindings(imagePVControl)]]; 

当我使用[imagePVControl setTranslatesAutoresizingMaskIntoConstraints:NO];滚动视图不能滚动,但如果我用[imagePVControl setTranslatesAutoresizingMaskIntoConstraints:YES];,我滚动视图可以srcoll。你能帮我解决这个问题吗?谢谢。

而且,我的厦门国际银行是取消选中“使用自动布局”,” 。

UPDATE

我如下改变我的代码。该UIScrollview可以滚动,但UIPageControl在中心对齐不离开了。我想在藻胶左UIPageControl但没有成功。请帮我纠正它。感谢

NSDictionary *views = @{@"ScrollImageView":self.scrollViewImage,@"TableView":self.productDetailTable,@"InfoView":self.infoView}; 

      NSDictionary *metrics = @{ @"ScrollImageheight" : ScrollImage_height,@"Tablewidth" : width, @"Tableheight" : Table_height,@"infoViewheight" : InfoView_height,@"infoViewWidth" : InfoView_width}; 

      [self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[TableView(Tablewidth)]-0-|" options:0 metrics:metrics views:views]]; 

      [self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[InfoView(infoViewWidth)]-0-|" options:0 metrics:metrics views:views]]; 

      [self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[ScrollImageView(ScrollImageheight)]-0-[InfoView(infoViewheight)]-0-[TableView(Tableheight)]-|" options:0 metrics:metrics views:views]]; 


      [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[imagePVControl]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(imagePVControl)]]; 
+0

分享IB – 2014-10-09 18:47:27

+0

的屏幕截图关于其他约束呢? – Moxy 2014-10-09 19:41:38

+0

检查代理也 – 2014-10-09 20:25:57

回答

0

我也在UIScrollView的限制中挣扎。我最近学到的是,一旦你设置TranslatesAutoresizingMaskIntoConstraints为NO,你将失去很多设置。像contentSizeUIScrollView内的视图帧,这很奇怪。 我学到的是,如果你想为UIScrollView里面的视图添加约束,你必须设置其视图的所有内容。 对你而言,我认为你应该尝试这种方式: [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@“H:| -10- [imagePVControl(320)] - 0- |”,options:0,metrics: nil,views:NSDictionaryOfVariableBindings(imagePVControl)]];我们可以使用NSLayoutConstraint constraintsWithVisualFormat:@“V:| -10- [imagePVControl(1440)] - 0- |”,options:0,metrics:nil,views:NSDictionaryOfVariableBindings(imagePVControl)]]]; 在这两个约束中,我指定了顶部,底部,左侧和右侧,除此之外,我还设置了宽度和高度imagePVControl 这里的原因是,一旦将TranslatesAutoresizingMaskIntoConstraints设置为NO,则告诉计算机你会告诉它contentSize有多大,而不是设置contentSize,你可以告诉它内容中所有视图的信息。这里的主要区别是UIScrollView周围没有固定的边缘,所以您不能将约束设置为其他种类的UIView

你可以从中学到:https://developer.apple.com/library/ios/technotes/tn2154/_index.html 希望这有助于:)

审查这个问题后,我发现这个问题。你对待UIPageControl的方式是对的,你应该在这里添加更多的代码。 我假设你在滚动视图的顶部有一个叫做myView的UIView,然后在myView下面有一个叫做myTable的UITableView。并且您想要设置myView 240高度和myTable 1200高度。然后这里是代码:

NSDictionary *viewsDic = NSDictionaryOfVariableBindings(myView, myTable); 
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[myView(320)]-|", options:0, metrics:nil, views:viewDic]]; 
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[myTable(320)]-|", options:0, metrics:nil, views:viewDic]]; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[myView(240)]-[myTable(1200)]-|", options:0, metrics:nil, views:viewDic]]; 

主要的原因是,你设置了滚动TranslatesAutoresizingMaskIntoConstraints为NO的子视图,这将使contentSize不能手动设置。所以我给出了scrollView的内容有多大,它会自动计算contentSize。

+0

THanks,我试过你的代码,滚动视图可以滚动,但内容大小不正确和UIPageControl不显示。 – NTNT 2014-10-10 02:51:21

+0

那么scrollview中的所有视图是什么?你不仅有一个UIPageControl,对吧? – WindMemory 2014-10-10 03:48:57

+0

是的,我有uitableview,uipagecontroler和uview在scrollview。 – NTNT 2014-10-10 05:11:10

0

为什么使用约束?为什么你不能​​UIScrollView,然后UIPageControlUIScrollView的顶部?

+0

因为我想为UIPageControl左对齐。但是当我为它设置约束时,我的滚动视图不能滚动。 – NTNT 2014-10-10 02:26:35

相关问题