下面的代码在我的应用程序中用strikeThrough.更改文本视图中文本的状态现在我用Objective和Swift编写了一个小示例--应用程序。同样,结果是令人沮丧的,因为你可以从截图中看到。任何帮助都是非常受欢迎的。
我只是使用一个TextView,并试图显示一些文本与划线-布局(其他风格,如博尔德,意大利,下划线.有相同的结果)
首先是objc,这是可以的,虽然划线部分的字体大小非常小。

现在和斯威在一起。字体与objc一样小,但没有删除:-)

现在(不知道其他方法)测试代码:
objc第1部分:为范围设置字体并调用makeStrikeThrough()
- (void) setFont
{
NSRange range = NSMakeRange(11, 24);
[self makeStrikeThrough:range];
}同样迅速:
func setFont() {
let range = NSMakeRange(11, 24)
self.makeStrikeThrough(range)
}objc第2部分: strikeThrough
- (void) makeStrikeThrough:(NSRange)selectedRange
{
NSMutableDictionary *dict = [self getDict:selectedRange];
[_textView.textStorage beginEditing];
[_textView.textStorage setAttributes:dict range:selectedRange];
[_textView.textStorage endEditing];
}在Swift中:
func makeStrikeThrough(selectedRange: NSRange) {
let dict = self.getDict(selectedRange)
self.textView.textStorage.beginEditing()
textView.textStorage.setAttributes([String() : dict], range: selectedRange)
self.textView.textStorage.endEditing()
}objc第3部分:帮助方法getDict()用StrikeThrough建立字典
- (NSMutableDictionary*) getDict:(NSRange)range
{
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:[NSNumber numberWithInt:2] forKey:NSStrikethroughStyleAttributeName];
return dict;
}再来一次斯威夫特
func getDict(range: NSRange) -> NSMutableDictionary {
let dict = NSMutableDictionary()
dict[NSStrikethroughStyleAttributeName] = NSNumber(integer: NSUnderlineStyle.StyleDouble.rawValue)
return dict
}我试图把这个问题从根本上说出来。也许你投我反对票;-)但我需要一个解决办法.
还是我应该使用AttributedStrings?
下载程序
objc
斯威夫特
发布于 2016-03-14 01:42:22
它归结为Swift函数中的一行代码:
func makeStrikeThrough(selectedRange: NSRange) {
let dict = self.getDict(selectedRange)
self.textView.textStorage.beginEditing()
textView.textStorage.setAttributes([String() : dict], range: selectedRange) // error
self.textView.textStorage.endEditing()
}应该是dict
func makeStrikeThrough(selectedRange: NSRange) {
let dict = self.getDict(selectedRange)
self.textView.textStorage.beginEditing()
textView.textStorage.setAttributes(dict, range: selectedRange)
self.textView.textStorage.endEditing()
}您还需要更改您的getDict函数:
func getDict() -> [String: AnyObject] {
return [NSStrikethroughStyleAttributeName: 2]
}https://stackoverflow.com/questions/35976534
复制相似问题