簡體   English   中英

在iOS中為UIPageControl添加約束時UIScrollView不滾動

[英]UIScrollView not scrolling when add constrains for UIPageControl in iOS

我有1個UIPageControl和1個UIScrollView 當我為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]; scrollview無法滾動 ,但是如果我使用[imagePVControl setTranslatesAutoresizingMaskIntoConstraints:YES]; ,我的scrollview可以srcoll 您能幫我解決此問題嗎? 謝謝。

另外,我的XIB取消選中“使用自動布局”。

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)]];

我還在UIScrollView中的約束方面苦苦掙扎。 我最近了解到的是,一旦將TranslatesAutoresizingMaskIntoConstraints設置為NO,您將丟失很多設置。 contentSizeUIScrollView內部的視圖框架一樣,這很奇怪。 我了解到的是,如果要向UIScrollView內的視圖添加約束,則必須設置其whosViews的所有內容。 對於您的情況,我認為您應該嘗試以下方式:[self.view addConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@“ H:| -10- [imagePVControl(320)]-0- |”,選項:0,指標:無,的觀點:NSDictionaryOfVariableBindings(imagePVControl)]]; [self.view addConstraints:[NSLayoutConstraintconstraintsWithVisualFormat:@“ 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]];

主要原因是您將scrollView TranslatesAutoresizingMaskIntoConstraints的子視圖設置為NO,這將導致無法手動設置contentSize。 因此,我給出了scrollView的內容大小,它會自動計算contentSize。

為什么要使用約束? 為什么不能在UIScrollView上設置setPagingEnabled:YES ,然后將UIPageControl放在層次結構中的UIScrollView頂部?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM