从Objective-C到Swift的UITextView类,intrinsicContentSize问题[关闭]

Posted

技术标签:

【中文标题】从Objective-C到Swift的UITextView类,intrinsicContentSize问题[关闭]【英文标题】:UITextView Class, intrinsicContentSize issue from Objective-C to Swift [closed] 【发布时间】:2020-01-22 12:49:34 【问题描述】:

我一直在 Objective-C 中工作,我使用 Swift 的时间很短。我在 Objective- 中有一个 UITextView 类C 我正在研究intrinsicContentSize 方法。


Objective-C

-(CGSize)intrinsicContentSize 
    if ([self.text length]) return self.contentSize;
    else return CGSizeZero;

现在我正在尝试将我的 Objective-C 代码转换为 Swift,但我遇到了这个函数的问题......

 override var intrinsicContentSize: CGSize 
         if text.lenght() 
              return contentSize
           else 
              return CGSize.zero
          
    

text.lenght 似乎给了我一个

类型错误的值'(UITextRange)->字符串?没有成员“长度”

【问题讨论】:

见***.com/questions/24037711/get-the-length-of-a-string Swift 中检索字符串长度的方式不同 @ArikSegal 我试图替换 text.length context.count 或 text.character.count 但它一直给我同样的错误..因此我不明白我错在哪里 代码中的错字:lenghtlength 这能回答你的问题吗? Get the length of a String 【参考方案1】:

试试这个

override var intrinsicContentSize: CGSize 
    return text.isEmpty ? .zero : contentSize

内在内容大小取决于文本长度(字符串中的字符数),我们返回所需的大小

【讨论】:

text.isEmpty 会是更好的解决方案。 @Sulthan 没错,我已经更新了代码【参考方案2】:

你可以在swift下面这样使用

override var intrinsicContentSize: CGSize 
     if self.text.count > 0 
        return contentSize
      else 
        return CGSize.zero
     
 

希望对你有所帮助。

【讨论】:

以上是关于从Objective-C到Swift的UITextView类,intrinsicContentSize问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 Objective-C 到 Swift 的 Swift 传递块

《程序员》杂志精选:从Objective-C到Swift

猿题库从 Objective-C 到 Swift 的迁移

将数据从 Swift 控制器传递到 Objective-C 控制器

从Objective-C到Swift的UITextView类,intrinsicContentSize问题[关闭]

从Objective-C向Swift转换学习到的经验