Ios 如何显示格式化的标记?
我试图对UIWebView进行子类化,以便显示格式化的标记。不幸的是,我有两个问题似乎无法解决 我似乎无法根据MvvmCross动态绑定的内容动态设置视图的高度。 视图顶部有一些空白,我似乎无法消除。现在我明白了这是因为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
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,我想我找到了一个有效的解决方案。