在我的视图控制器中,我有一个UITextView.这个文本视图用一个字符串填充.字符串可以是短的或长的.根据字符串的长度,textview的高度必须调整.
我使用故事板和汽车布局.

我对文本视图的高度有些麻烦.

有时,高度是完美的调整文本.有时候,不,文字被裁剪在第一行.下面,textview是黄色的.蓝色是scrollview中的容器视图.紫色是照片的地方.

文本来自我的核心数据库,它们是字符串属性.
在屏幕1和2之间,唯一改变的是字符串.
如果我在控制台中打印字符串,我有正确的文本:

my amazing new title

Another funny title for demo

我的textview的限制:

我不明白为什么我有2个不同的显示.

编辑

我试过@Nate的建议,在viewDidLoad中,我补充说:

myTextViewTitle.text="my amazing new title"

    myTextViewTitle.setContentHuggingPriority(1000,forAxis: UILayoutConstraintAxis.Vertical)
    myTextViewTitle.setContentCompressionResistancePriority(1000,forAxis: UILayoutConstraintAxis.Vertical)
    myTextViewTitle.setTranslatesAutoresizingMaskIntoConstraints(false)  

    let views = ["new_view": myTextViewTitle]
    var constrs = NSLayoutConstraint.constraintsWithVisualFormat("|-8-[new_view]-8-|",options: NSLayoutFormatOptions(0),metrics: nil,views: views)
    self.view.addConstraints(constrs)
    self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-8-[new_view]",views: views))
    self.myTextViewTitle.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[new_view(220@300)]",views: views))

没有结果.在界面构建器中为我的textview添加或不添加高度约束

编辑2

我需要一个UITextView而不是一个UIlabel,因为后退按钮,要使用排除路径.

let exclusionPathBack:UIBezierPath = UIBezierPath(rect: CGRect(x:backButton.bounds.origin.x,y:backButton.bounds.origin.y,width:backButton.bounds.width+10,height:backButton.bounds.height))
     myTextViewTitle.textContainer.exclusionPaths=[exclusionPathBack]

解决方法

我找到了一个解决方案.

我专注于我的UITextView的高度,然后我读了一篇关于长宽比的帖子.我想尝试和工作!

所以在故事板中,我为textview添加了一个宽高比,我选中了“在构建时删除”选项.

在viewDidLayoutSubviews()中,我写道:

override func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews()

    let contentSize = self.myTextViewTitle.sizeThatFits(self.myTextViewTitle.bounds.size)
    var frame = self.myTextViewTitle.frame
    frame.size.height = contentSize.height
    self.myTextViewTitle.frame = frame

    aspectRatioTextViewConstraint = NSLayoutConstraint(item: self.myTextViewTitle,attribute: .Height,relatedBy: .Equal,toItem: self.myTextViewTitle,attribute: .Width,multiplier: myTextViewTitle.bounds.height/myTextViewTitle.bounds.width,constant: 1)
    self.myTextViewTitle.addConstraint(aspectRatioTextViewConstraint!)

}

它工作完美.

ios – 如何在SWIFT中调整文本视图的高度?的更多相关文章

  1. 如何用 Parse 和 Swift 搭建一个像 Instagram 那样的应用?

    本篇文章中,作者主要介绍了如何基于Parse特点,打造一款类似Instagram的应用,完整而清晰的步骤,为开发者提供一次绝佳的学习体验。这款应用将完全使用Swift语言开发,Swift是苹果最新的编程语言,用于打造iOS应用。Parse并不用完全重写Swift,所以我们需要创建一个桥接头来处理它俩的兼容性。如果导入是完整的,Parse会及时提示。至此,我们在Parse中的全部工作已经完成。Parse是用Objective-C搭建的,而我们的项目则是用Swift语言,两者之间需要适当的设置才能兼容。

  2. swift – 如何将firebase数据库数据作为UICollection View的数据源?

    如果有帮助,这是我的Firebase数据.例如,“Banks”将是类别名称,单元格将由银行下的所有条目填充.更新:我想要实现的是类似于AppstoreUI,不同类别的应用程序和每个类别是具有水平滚动的集合视图.在我的应用程序中,企业属于firebase中列出的不同类别,每个类别都可以水平滚动.如何更新下面的集合视图属性?

  3. android – Room Invalidation tracker初始化两次

    我有一个水平回收站视图,其中包含自定义项目.每个项目都可以在Recycler视图中保存当前项目的位置.我想使用拖放移动项目时更新项目位置.但是当水平视图中有三个以上的项目时,数据会被删除.请帮帮我.SourceCode这是我在Logcat中得到的:E/ROOM:Invalidationtrackerisinitializedtwice:/.E/Itemmoved:Counterfrom3nexti

  4. android – 使用CursorLoader在填充列表视图之前显示进度指示器

    在我的列表视图没有填充数据库数据时,有什么更好的方法来显示进度指示器?

  5. php – 如何在没有数据库表的情况下创建yii模型

    我创建了一个没有数据库表的yii模型,但现在的问题是,每当我试图在视图文件中调用模型函数时,它都无法识别在视图中我称之为这样blah::model()–>sayHello(),然后我得到了死亡白页,为什么会这样?如果要创建没有表的Yii模型,可以使用CFormModel创建.您可以定义模型变量,规则和属性标签.使用CFormModel创建的更改密码表单的示例代码.

  6. php – Laravel – 语法错误,意外的文件结束

    我有一个网站在主机上工作正常,但我正在尝试安装在本地主机.我已经下载了所有内容并配置为在localhost上工作–数据库和URL.问题是这个错误:UnhandledExceptionMessage:Syntaxerror,unexpectedendoffileLocation:C:\ProgramFiles(x86)\EasyPHP-12.1\www\laravel\view.PHP(386):e

  7. php – Symfony2:基表或视图未找到:1146

    我一遍又一遍地看着我的PHPmyAdmin,数据库就是所有的字段和数据…

  8. php – PDOException语法错误或访问冲突1142,在创建引用其他视图的视图时

    对于遇到此问题的任何其他人,由于Laravel设置以下PDO连接选项而出现问题:我的解决方案是克隆我的数据库配置,覆盖PDO选项,然后在创建视图时使用该连接,而不是为我的整个应用程序启用EmulatePrepares:配置/database.PHP中移民为了帮助我调试这个,我很荣幸获得RyanVincent.

  9. 选择在php OOP设计中使用哪些类

    我试图找到’真实世界’的例子,但PHP代码告诉我如何使大象改变颜色或舞蹈并没有真正帮助…

  10. php – 在Apache CouchDB中按键搜索

    是否可以在ApacheCouchDB中按键值进行搜索?给出下面的样本数据:我可以在数据库中查询用户jsmith或有电子邮件jsmith@example.com的用户吗?

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部