J'ai un UIContainerView avec Frame = {X = 20, Y = 88, Width = 728, Height = 660} et un UIScrollView embedded à l'intérieur.
L'UIScrollView signale Frame = {X = 0, Y = 0, Largeur = 768, Height = 960} qui entraîne un décalage de 40 (la section en or) dans la largeur lors de la pagination de UIScrollView. Il en résulte la sortie suivante ayant paginé une fois vers la gauche:
Toutefois, ContentSizeForViewInPopover signale la taille d'image attendue = {Width = 728, Height = 660}. Comment puis-je corriger le cadre UIScrollView pour avoir la bonne taille?
Voici le code pour ViewDidLoad () de l'UIViewController embedded:
var pages = PageControl.Pages = 2; Console.WriteLine("ScrollView Frame: {0}", ScrollView.Frame); for(int i = 0; i < pages; i++) { RectangleF frame frame.X = ScrollView.Frame.Width * i; // expected {728 * i} but is {768 * i} frame.Y = 0; frame.Size = ScrollView.Frame.Size; Console.WriteLine("Subview frame: {0}", frame); ScrollView.AddSubview( new UIView(frame) { Bounds = frame, BackgroundColor = GetRandomColor() }); } ScrollView.ContentSize = new SizeF(ScrollView.Frame.Width * pages, ScrollView.Frame.Height); Console.WriteLine("ScrollView ContentSize = {0}", ScrollView.ContentSize);
Vérifiez que dans IB
sous le parent UIViewController
, dans la section Layout de l'inspecteur d'attributes, l'option 'Ajuster les insertions de la vue défilante' est décochée. J'ai eu un problème similaire qui m'a fait trébucher pendant un certain time et c'était tout ce que je devais faire pour get la layout appropriée.
appelez [self.ScrollView layoutIfNeeded]; avant cette ligne
frame.X = ScrollView.Frame.Width * i; // expected {728 * i} but is {768 * i}
ça marche avec moi, goodluck
Dans IOS 7.0, utilisez self.automaticallyAdjustsScrollViewInsets = NO; dans ViewDidLoad
Essayez de créer votre UIScrollView dans le code, apparemment le concepteur remplace tout ajustement que vous appliquez dans le code.