コード例 #1
0
        private void Initialize()
        {
            _content = new UITextView();

            _content.Editable = true;
            _content.AllowsEditingTextAttributes = true;
            _content.ShouldChangeText           += OnShouldChangeText;
            _content.Changed                     += ContentOnChanged;
            _content.AutocorrectionType           = UITextAutocorrectionType.No;
            _content.AutocapitalizationType       = UITextAutocapitalizationType.None;
            _content.SelectionChanged            += OnSelectionChanged;
            _content.ShowsVerticalScrollIndicator = false;
            _content.Font = UIFont.FromName("TimesNewRomanPSMT", 20);

            var novelContent = new AtLeastSingleSpaceString(_novel.Content);

            var result = new NSMutableAttributedString(novelContent.PlainText);

            var paragraphStyle = CreateDefaultParagraph();

            result.AddAttribute(UIStringAttributeKey.ParagraphStyle, paragraphStyle, new NSRange(0, novelContent.Length));

            result.AddAttribute(UIStringAttributeKey.Font, UIFont.FromName("TimesNewRomanPSMT", 20), new NSRange(0, novelContent.Length));

            foreach (var textInfo in _novel.Format)
            {
                switch (textInfo.Style)
                {
                case TextStyle.Centered:
                    var paragraph = CreateDefaultParagraph();
                    paragraph.Alignment = UITextAlignment.Center;
                    result.AddAttribute(UIStringAttributeKey.ParagraphStyle, paragraph, new NSRange(textInfo.Range.Offset, textInfo.Range.Length));
                    break;

                case TextStyle.Right:
                    var paragraph2 = CreateDefaultParagraph();
                    paragraph2.Alignment = UITextAlignment.Right;
                    result.AddAttribute(UIStringAttributeKey.ParagraphStyle, paragraph2, new NSRange(textInfo.Range.Offset, textInfo.Range.Length));
                    break;

                case TextStyle.Bold:
                    result.AddAttribute(UIStringAttributeKey.Font, UIFont.FromName("TimesNewRomanPS-BoldMT", 20), new NSRange(textInfo.Range.Offset, textInfo.Range.Length));
                    break;

                case TextStyle.Italic:
                    result.AddAttribute(UIStringAttributeKey.Font, UIFont.FromName("TimesNewRomanPS-ItalicMT", 20), new NSRange(textInfo.Range.Offset, textInfo.Range.Length));
                    break;

                case TextStyle.BoldAndItalic:
                    result.AddAttribute(UIStringAttributeKey.Font, UIFont.FromName("TimesNewRomanPS-BoldItalicMT", 20), new NSRange(textInfo.Range.Offset, textInfo.Range.Length));
                    break;
                }
            }

            MarkSpelling(result);

            _content.AttributedText = result;

            Add(_content);

            _cursor = new CursorView();
            InitCursor();

            InitSpellchecker();

            Layout = () =>
            {
                _content.ChangeSize(Frame.Width - _margin * 2, Frame.Height);
                _content.ChangeX(_margin);

                _cursor.PositionToCenterInside(this);
            };

            Layout();
        }