黄学彪
2020-12-17 6c0c799c1f5da2d215ec8d9df9b92b3d1948dc14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using Shared;
 
#if __IOS__
using UIKit;
using Foundation;
#endif
 
namespace HDL_ON.UI
{
    /// <summary>
    /// TextButton
    /// 解决iOS 文本到边框有边距问题
    /// 
    /// </summary>
    public class TextButton : Button
    {
        public TextButton()
        {
#if __IOS__
            //重写修改文本到边框的内边距为0
            (this.uiView as MyButton).ContentEdgeInsets = new UIEdgeInsets(0, 0, 0, 0);
#endif
 
        }
 
        int _lineSpacing;
        /// <summary>
        /// 设置行间距
        /// </summary>
        public int LineSpacing
        {
            set
            {
                _lineSpacing = value;
                SetButtonLineSpacing(_lineSpacing);
            }
        }
 
 
#if __IOS__
        /// <summary>
        /// 按钮设置行距方法
        /// </summary>
        /// <param name="spacing"></param>
        void SetButtonLineSpacing(int spacing)
        {
            UIStringAttributes stringAttributes = new UIStringAttributes
            {
                Font = (this.uiView as MyButton).TitleLabel.Font,
                ForegroundColor = UIColor.Black,
                ParagraphStyle = new NSMutableParagraphStyle() { LineSpacing = spacing }
            };
            var AttributedText = new NSMutableAttributedString(Text);
            AttributedText.AddAttributes(stringAttributes, new NSRange(0, Text.Length));
            (this.uiView as MyButton).TitleLabel.AttributedText = AttributedText;
        }
 
        /// <summary>
        /// 显示当前文字需要几行
        /// </summary>
        /// <returns></returns>
        int GetNeedLinesWithWidth()
        {
            return 0;
        }
        /**
 
 
// @param width 给定一个宽度
// @return 返回行数
// */
//- (NSInteger) needLinesWithWidth:(CGFloat) width
//        {
//            //创建一个labe
//            UILabel * label = [[UILabel alloc]
//            init];
//            //font和当前label保持一致
//            label.font = self.font;
//            NSString* text = self.text;
//            NSInteger sum = 0;
//            //总行数受换行符影响,所以这里计算总行数,需要用换行符分隔这段文字,然后计算每段文字的行数,相加即是总行数。
//            NSArray* splitText = [text componentsSeparatedByString: @"\n"];
//    for (NSString* sText in splitText)
//            {
//                label.text = sText;
//                //获取这段文字一行需要的size
//                CGSize textSize = [label systemLayoutSizeFittingSize: CGSizeZero];
//                //size.width/所需要的width 向上取整就是这段文字占的行数
//                NSInteger lines = ceilf(textSize.width / width);
//                //当是0的时候,说明这是换行,需要按一行算。
//                lines = lines == 0 ? 1 : lines;
//                sum += lines;
//            }
//            return sum;
//            }
 
            //#elif __Android__
#else
 
        /// <summary>
        /// 按钮设置行距方法
        /// </summary>
        /// <param name="spacing"></param>
        void SetButtonLineSpacing(int spacing)
        {
           (this.AndroidView as Android.Widget.Button).SetLineSpacing(spacing, 1);
        }
 
#endif
        }
 
 
 
}