2016-03-20 27 views
0

これはかなり簡単な解決策かもしれないが、ここでの提案は私にとっては役に立たない。私はUITableViewCellの中にUIScrollViewを持っています。このようにリストからスクロールビューに動的イメージを追加します。Xamarin iOS - スクロールビュー内のscrollviewの内容を合わせる

public void InitViews() 
{ 
    scrollViewThumbNails.ContentSize = 
      new SizeF((float)scrollViewThumbNails.Frame.Size.Width/listCount * listCount, 
         (float)scrollViewThumbNails.Frame.Size.Height); 

    for (int i = 0; i < listCount; i++) 
    {          
     var imageView = new UIImageView 
     { 
      Frame = new RectangleF((float)i * (float)scrollViewThumbNails.Frame.Size.Width/listCount, 0, 
         (float)scrollViewThumbNails.Frame.Size.Width/listCount, (float)scrollViewThumbNails.Frame.Size.Height), 
      UserInteractionEnabled = true, 
      ContentMode = UIViewContentMode.ScaleAspectFit 
     }; 

     //call method to load the images 

     var index = i; 
     imageView.SetImage(
      url: new NSUrl(allItems[i].AbsoluteUri), 
      placeholder: UIImage.FromFile("placeholder.png"), 
      completedBlock: (image, error, type, url) => 
      { 
       //when download completes add it to the list 
       if (image != null) 
       { 
        allImages.Add(image); 

        scrollViewThumbNails.AddSubview(imageView); 
       } 
      }); 
    } 

私はこのようなViewDidAppearでサブビューの合計数に基づいて、scrollviewのコンテンツのサイズを設定するためにアドバイスここに提案が見つかりました:

public override void ViewDidAppear (bool animated) 
{ 
    base.ViewDidAppear (animated); 

    CGRect contentRect = CGRect.Empty; 

    foreach(UIImageView view in scrollViewThumbNails.Subviews) 
    { 
     contentRect = CGRect.Union(contentRect,view.Frame); 
    } 

    scrollViewThumbNails.ContentSize = contentRect.Size; 
} 

imageViewsはまだ間隔をあけてみませんかされています下のスクリーンショットに示すように、画面/スクロールビューの端から開始しないでください。私は、最初の画像が常にスクロールビューの原点に位置付けられ、各画像の間隔が必要ではないことを望みます。コンテンツのサイズに基づいてスクロールビューを調整するにはどうすればよいですか?

誰かが私に行方不明を表示できますか?ありがとう。

enter image description here

答えて

0

Iが見つかりました。私がViewDidLayoutSubviewsのスクロールビューのコンテンツサイズとしてそれをすべてのビューの合計の高さと幅を計算し、割り当てるここで溶液:

Solution

public override void ViewDidLayoutSubviews() 
{ 
    base.ViewDidLayoutSubviews(); 

    try{ 

     float scrollViewHeight = 0.0f; 
     float scrollViewWidth = 0.0f; 

     foreach(UIImageView view in scrollViewThumbnails.Subviews) 
     { 
      scrollViewWidth += (float)view.Frame.Size.Width; 
      scrollViewHeight += (float)view.Frame.Size.Height; 
     } 

     scrollViewThumbnails.ContentSize = new CGSize(scrollViewWidth, scrollViewHeight); 
    } 
    catch(Exception ex) 
    { 
     Console.WriteLine(ex.Message+ex.StackTrace); 
    } 
} 
関連する問題