0

以下のライブラリを使用して Xamarin.iOS でスライド メニューを作成しましたhttps://github.com/thedillonb/MonoTouch.SlideoutNavigation

SplashViewController.cs

window = new UIWindow(UIScreen.MainScreen.Bounds);
Menu = new SlideoutNavigationController();

var storyboard = UIStoryboard.FromName("Main", null);
var webController = storyboard.InstantiateViewController("HomeViewController") as HomeViewController;

Menu.MainViewController = new MainNavigationController(webController, Menu);
Menu.MenuViewController = new MenuNavigationController(new DummyControllerLeft(), Menu) { NavigationBarHidden = true };

window.RootViewController = Menu;
window.MakeKeyAndVisible();

DummyControllerLeft.cs

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

            TableView.Frame = new RectangleF((float)TableView.Frame.Left, 30, (float)TableView.Frame.Width, (float)(View.Frame.Size.Height - 30));
            headerView = new UIView();
            headerView.Frame = new CoreGraphics.CGRect(0, 0, TableView.Frame.Width, 140);

            profileImage = new UIImageView();
            profileImage.Frame = new CoreGraphics.CGRect(10, 10, 70, 70);
            profileImage.Layer.CornerRadius = 35;
            profileImage.ClipsToBounds = true;
            profileImage.Image = UIImage.FromBundle("gargi_logo.png");

            userName = new UILabel();
            userName.Frame = new CoreGraphics.CGRect(10, 90, TableView.Frame.Width - 20, 20);
            userName.Font = GargiFontAndSize.B14();
            userName.TextColor = UIColor.White;
            headerView.AddSubview(userName);

            userRole = new UILabel();
            userRole.Frame = new CoreGraphics.CGRect(10, 110, TableView.Frame.Width - 20, 20);
            userRole.Font = GargiFontAndSize.B14();
            userRole.TextColor = UIColor.White;
            headerView.AddSubview(userRole);

            headerView.AddSubview(profileImage);
            TableView.TableHeaderView = headerView;

            TableView.ContentInset = new UIEdgeInsets(20, 0, 0, 0);

            GetUserItemData();

            SetSidePanel();

        }

その正常に動作します。

画面 1:

ここに画像の説明を入力

しかし、スクロールすると、ステータスバーに干渉しています。下の画像を参照してください。

画面 2:

ここに画像の説明を入力

ほとんどすべての解決策または回避策を試しましたが、何も役に立ちません。それらのいくつかは以下にあります。

試した1:

TableView.ContentInset = new UIEdgeInsets(20, 0, 0, 0);

2を試しました:

TableView.ScrollRectToVisible(new CGRect(0, 0, 1, 1), true);

試した3:

EdgesForExtendedLayout = UIRectEdge.None;
    ExtendedLayoutIncludesOpaqueBars = false;
    AutomaticallyAdjustsScrollViewInsets = false;

過去 6 時間、この問題を解決しようとしましたが、何の助けにもなりません。

どんな助けでも感謝されます。

4

1 に答える 1

0

すべてのメニューの「行」が単一のセクションにある場合、「TableHeaderView」を「SectionHeader」に変更すると、セクションがスクロールしてもそのまま残り、理論的には問題を解決できます。

これを行うには、テーブルビューのソースデリゲートクラスを作成する必要があると思いますが、プロパティはテーブルビュー自体に公開されていないため、次のようにする必要があります。

それをテーブル ビューに割り当てます。

yoursource source = new yoursource();
TableView.Source = source;

デリゲート クラスを作成します。

using CoreGraphics;
using Foundation;
using System;
using UIKit;

namespace somenamespace
{
    class yoursource : UITableViewSource
    {
        public ThreadTableSource(UITableView table, List<ConversationThread> Threads)
        {

        }

        public override UIView GetViewForHeader(UITableView tableView, nint section)
        {
            headerView = new UIView();
            headerView.Frame = new CoreGraphics.CGRect(0, 0, tableView.Frame.Width, 140);

            profileImage = new UIImageView();
            profileImage.Frame = new CoreGraphics.CGRect(10, 10, 70, 70);
            profileImage.Layer.CornerRadius = 35;
            profileImage.ClipsToBounds = true;
            profileImage.Image = UIImage.FromBundle("gargi_logo.png");

            userName = new UILabel();
            userName.Frame = new CoreGraphics.CGRect(10, 90, tableView.Frame.Width - 20, 20);
            userName.Font = GargiFontAndSize.B14();
            userName.TextColor = UIColor.White;
            headerView.AddSubview(userName);

            userRole = new UILabel();
            userRole.Frame = new CoreGraphics.CGRect(10, 110, tableView.Frame.Width - 20, 20);
            userRole.Font = GargiFontAndSize.B14();
            userRole.TextColor = UIColor.White;
            headerView.AddSubview(userRole);

            headerView.AddSubview(profileImage);

            return headerView;
        }   
    }
}

セクション ヘッダーの xamarin ガイドへのリンク。

于 2017-08-30T08:04:12.570 に答える