虽然我发现如何在第一行(FirstLineHeadIndent)和其他行(HeadIndent)中添加缩进,但我找不到如何向仅前两行/三行添加缩进以便实现这样的事情:
PS:这不是重复,因为我不询问如何缩进仅限第一行,正如一位用户建议的那样。
答案 0 :(得分:4)
在ios中使用TextKit
框架
CGRect checkBoxFrame = [self.textView convertRect:self.checkView.bounds fromView:self.checkView];
checkBoxFrame.origin.x -= self.textView.textContainerInset.left;
checkBoxFrame.origin.y -= self.textView.textContainerInset.top;
UIBezierPath *checkBoxPath = [UIBezierPath bezierPathWithOvalInRect:checkBoxFrame];
self.textView.textContainer.exclusionPaths = @[checkBoxPath];
它将排除TextView内容中的图像路径
答案 1 :(得分:1)
您需要在故事板中将UILabel
文字设置为Attributed
字符串。
然后你可以编辑每一行的缩进,你也可以粘贴你用文本编辑器创建的任何文本,它将保留缩进以及其他属性。
您当然可以通过编程方式操作这些属性,这是一个示例:
@IBOutlet weak var label: UILabel!
let text = "\tfirst line\n \tsecond line\nthird line\nforth line"
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.left, location: 15, options: [:])]
paragraphStyle.headIndent = 10
label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle])
以下是如何配置它的示例:
以下是配置缩进的方法:
以下是模拟器上的示例:
答案 2 :(得分:0)
您需要使用UILabel.AttributedText的stringattribute属性。
它实际上是NSMutableAttributedString类型,所以我首先投入 label.AttributedText为可变类型然后我可以操纵它。‡
要执行此操作,您需要使用以下内容:
var mutable = Control.AttributedText as NSMutableAttributedString;
UIStringAttributes uiString=new UIStringAttributes();
然后你需要在第一行设置一个缩进(以你已经知道的方式这样做),然后你可以像下面那样设置其段落样式的headIndent。
这是从objective-c转换而来可能并不完美: ‡
NSMutableParagraphStyle paragraphStyle = new NSMutableParagraphStyle();
paragraphStyle.headIndent = 14;
NSDictionary attributes (){
StyleAttributeName = paragraphStyle;
};
mutable.AddAttribute(attributes);
Control.attributedText = mutable;
我相信这样的东西与你的'FirstLineHeadIndent'代码相结合应该可以解决这个问题。