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
|
}
|
|
|
|
}
|