Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何显示格式化的标记?_Ios_Xamarin.ios_Uiwebview_Markdown_Mvvmcross - Fatal编程技术网

Ios 如何显示格式化的标记?

Ios 如何显示格式化的标记?,ios,xamarin.ios,uiwebview,markdown,mvvmcross,Ios,Xamarin.ios,Uiwebview,Markdown,Mvvmcross,我试图对UIWebView进行子类化,以便显示格式化的标记。不幸的是,我有两个问题似乎无法解决 我似乎无法根据MvvmCross动态绑定的内容动态设置视图的高度。 视图顶部有一些空白,我似乎无法消除。现在我明白了这是因为iOS应该允许我们在导航栏后面滚动内容,但不幸的是我没有这样做我的布局。 如何解决这两个问题 我附上了我当前进度的截图,以及我用来生成它的代码 using System; using System.Drawing; using System.IO; using System.Te

我试图对UIWebView进行子类化,以便显示格式化的标记。不幸的是,我有两个问题似乎无法解决

我似乎无法根据MvvmCross动态绑定的内容动态设置视图的高度。 视图顶部有一些空白,我似乎无法消除。现在我明白了这是因为iOS应该允许我们在导航栏后面滚动内容,但不幸的是我没有这样做我的布局。 如何解决这两个问题

我附上了我当前进度的截图,以及我用来生成它的代码

using System;
using System.Drawing;
using System.IO;
using System.Text;
using FutureState.BreathingRoom.Touch.Ui.Resources;
using MarkdownDeep;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace FutureState.BreathingRoom.Touch.Ui.Controls
{
    public class FsmUIMarkdownView : UIWebView
    {
        private readonly Markdown _markdownDeep;
        private string _markdown;

        public FsmUIMarkdownView()
        {
            _markdownDeep = new Markdown();
            SetLayoutInfo();
        }

        public FsmUIMarkdownView(RectangleF frame)
            : base(frame)
        {
            _markdownDeep = new Markdown();
            SetLayoutInfo();
        }


        public string Markdown
        {
            get { return _markdown; }
            set
            {
                if (string.IsNullOrEmpty(value) || _markdown == value) return;

                _markdown = _markdownDeep.Transform(value);

                var html = new StringBuilder();
                html.Append("<html>");
                html.Append("<head>");
                html.Append("<style type = \"text/css\">");
                html.Append("body {font-family:helvetica;font-size:15; margin:0; padding:0;}");
                html.Append("p {margin:0; padding:5;}");
                html.Append("</style>");
                html.Append("</head>");
                html.Append("<body>");
                html.Append(_markdown);
                html.Append("</body>");
                html.Append("</html>");

                var contentDirectoryPath = Path.Combine(NSBundle.MainBundle.BundlePath, "/");
                LoadHtmlString(html.ToString(), new NSUrl(contentDirectoryPath, true));
                UpdateSize();
                HandleHtmlContentChanged();
            }
        }

        private void UpdateSize()
        {

        }


        private void SetLayoutInfo()
        {
            Layer.CornerRadius = 3;
            Layer.BorderColor = CustomUIColor.breathingroom_borders.CGColor;
            Layer.BackgroundColor = UIColor.White.CGColor;
            ClipsToBounds = true;
        }

        public event EventHandler HtmlContentChanged;

        private void HandleHtmlContentChanged()
        {
            var handler = HtmlContentChanged;
            if (handler != null)
                handler(this, EventArgs.Empty);
        }
    }
}

你必须使用UIWebView吗?@Irene我会使用任何可以完成这项工作的工具。我最初选择UIWebView是因为它呈现HTML。。我想匹配我的Ok,我也这么做了,但是使用了markdown解析器和NSAttributedString。网上有几个例子,是一个很好的开始。如果您需要代码示例,请告诉我,以便我可以编写更正确的答案。您是否在任何地方使用SetEdgesForExtendedLayout?谢谢@Irene,我想我找到了一个有效的解决方案。