java精確測量文本高度_基于文本精確計算UITableViewCell的高度

我正在開發一個ios應用程序,并使用autolayout我正在嘗試創建一個具有不同行高的表視圖 .

原型單元的布局如下:

6a2429c9-8dff-4fdc-953e-90be51c13d20.png

我有一個主單元格(黑色)里面有一個UIView(紅色),里面有一個UILabel(藍色)

我添加的Autolayout約束如圖所示:

The UIView has the following Constraints:

80到單元格的左邊緣

從單元格的右邊緣

20

從單元格的上邊緣

15

從單元格的底部邊緣

15

The UILabel has the following Constraints:

20到UIView的左邊緣

從UIView的右邊緣

15

從UIView的上邊緣

10

從UIView的下邊緣

10

我需要UILabel根據其內部的文本大小在高度上動態 . 為此,我做了以下事情:

將UILabel的行數設置為0

將字體設置為Helvetica Neueu,大小為15(在界面構建器中)

將Lines Break設置為"Word wrap"(在界面構建器中)

在視圖Controller中,我實現了以下內容:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

//get the item

ListItem *item = (ListItem*) self.items[indexPath.row];

//calculate the label size based on the item title that we will display

CGSize textSize = [item.title sizeWithFont:[UIFont fontWithName:@"HelveticaNeue" size:15.0] constrainedToSize:CGSizeMake(tableView.frame.size.width - 135.f, 9999.f) lineBreakMode:NSLineBreakByWordWrapping];

//return the height + the 50 to accomodate with the layout

return textSize.height + 50.f;

}

基本上我正在做的是獲取我需要顯示的文本(item.title),我調用 sizeWithFont 來計算我需要多少空間用于該標簽并返回它 .

在sizeWithFont方法中,我傳遞我用于 Headers [UIFont fontWithName:@"HelveticaNeue" size:15.0] 的字體,然后根據圖片約束約束計算的大小,獲取tableView的寬度并減去邊距以獲得標簽

對于寬度:我減去80(對于UIView左)和20(對于標簽左)和15(對于標簽右)和20對于UIView右)

對于高度我放9999,因為我不需要約束它來進行計算 .

在我得到所需標簽的大小后,我返回了確切的高度加上標簽的垂直邊距為15,10,10和15(總計= 50) return textSize.height + 50.f;

The problem:

雖然我正在進行精確計算,但在運行應用程序時,它并非100%精確 . 雖然大多數情況下我得到一個精確的高度,但在某些情況下(特別是當我們在標簽中有例如3行,而第3行有一個單詞時),單元格的高度僅對應于2行并且切割第三行一 . 通過試驗和錯誤增加高度可能是可能的,但它也會影響顯示良好的細胞的高度 .

所以我的問題是,我的計算錯誤是什么?當使用autolayout時,有沒有辦法根據標簽中的文本為單元格設置動態高度?

謝謝

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382993.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382993.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382993.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php做一個微信退款,PHP實現微信退款功能

大家好,我是小編,最近在調微信退款接口,發現有許多坑,更大家分享一下① 要是在測試的時候,網頁提示 curl 58 說明 證書的路徑出現問題(這里要填物理路徑,也就是絕對路徑)②網頁提示curl 52 說明你的證書引入…

php顯示時間,php實現用已經過去多長時間的方式顯示時間

本文實例講述了php用已經過去多長時間的方式顯示時間的方法。分享給大家供大家參考。具體如下:這里以一種可讀性比較好的方式顯示已經過去多長時間,比如:距離現在10秒,距離現在1天等等。function time_is_older_than($t, $check_t…

java中日期計算時間差,java中依據,兩個日期,計算時間差

java中根據,兩個日期,計算時間差。分別獲取兩個時間的毫秒數Date.getTime(),相減,得到的值/1000為秒數,/60*1000為分鐘數,/60*60*1000為小時數。/*** 計算時間差** param begin* param end* return*/public…

php獲取token失敗,微信開發,老是獲取token失敗

微信開發,總是獲取token失敗$appid wx1aabc8673b8f103a;$appsecret 9aa99fc9db9bf1321c1afe05feb29b6c;$url "https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid$appid&secret$appsecret";$urlhttps://api.weixin.…

2008下php上傳文件崩潰,php – 當用戶反復嘗試上傳無效文件類型時,網站崩潰

我試圖理解錯誤……我有一個允許用戶上傳CSV的網絡應用程序.如果文件類型不是CSV,則不會發生任何操作,頁面只顯示“無效的文件類型”.如果用戶嘗試上載無效的文件類型并反復單擊觸發處理上載的PHP文件的按鈕,則PHP文件最終會無響應,并且網站崩潰時出現以下錯誤:&quo…

java錯誤1601解決方法,求助解決錯誤

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)at …

java == hashcode,java中==和equals和hashCode的區別

java中和equals和hashCode的區別 的作用:基本類型:比較的就是值是否相同引用類型:比較的就是地址值是否相同(確切的說,是堆內存地址)equals 的作用:引用類型:默認情況下,比較的是地址值。public boolean eq…

java經典設計模式4,JAVA設計模式(4) 之裝飾設計模式

在現實生活中我們的汽車都具備跑的功能,我們可以不改變汽車原有功能的前提下,把它放入一個裝修廠,開進去讓里面給咱們的車子做一些裝飾,開出來之后呢,就具備了上天的功能了(技術可達是可以的哈),這就給原來…

java讀取gxk文件,Java中常見的IO流及其使用

Java中IO流分成兩大類,一種是輸入流,所有的輸入流都直接或間接繼承自InputStream抽象類,輸入流作為數據的來源,我們可以通過輸入流的read方法讀取字節數據;另一種是輸出流,所有的輸出流都直接或間接繼承自O…

matlab+voronoin函數,在Voronoi區域中生成隨機點,并創建具有高維數據的Voronoi區域...

我正在使用k-means聚類算法,并且對于每個聚類質心,我試圖為質心生成n維Voronoi區域 . 之后我需要從Voronoi區域生成隨機點 .我已經嘗試使用Matlab / Octave和scipy來獲得n維Voronoi區域 . 但我有兩個問題 .生成頂點和區域后,如何從區域生成隨…

matlab雙縱軸刻度覆蓋問題,求助: matlab雙縱軸換圖問題

非常感謝!不過,y2的范圍是-1*(10^6),7*(10^6),但是不等分:(把y1的范圍調成0.4:0.2:5.8也有28個元素,然后y2也有28個元素,但是不等分,是個曲線,而且,這個曲線的值與y1是有關的。數據見附件syms d…

php最新圖片漏洞,2018最新PHP漏洞利用技巧

本文學習了幾種新式的php exploit方法,在此做一筆記文件刪除漏洞, unlink()Phar 反序列化, file*()PHP對象實例化, ReflectionClass()0x01 WordPress Design Flaw Leads to WooCommerce RCEWooCommerce 3.4.6本版本之前存在任意刪除漏洞,因為WordPress的…

php v-for=,Vue中v-for循環節點的實現代碼

本篇文章給大家帶來的內容是關于Vue中v-for循環節點的實現代碼,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。Title父循環第一次子循環第一次json數據的第幾條數值{{index}}{{indo}}{{bp.index}}{{bp.childName}}let ernew …

matlab尋找向量最小值,matlab – 在排序向量中快速搜索大于x的最小值

由于輸入已經排序,自定義二進制搜索應該有效(您可能需要對邊緣情況進行一些更新,即請求的值小于數組的所有元素):function [result, res2] binarySearchExample(val)%// Generate example data and sort itN 100000000;a rand(N, 1);a sort(a);%// Run the algo…

搜matlab代碼的網站,LTE小區搜索matlab仿真

【實例簡介】LTE小區搜索過程的matlab仿真,比較詳細,內容不錯【實例截圖】【核心代碼】35738649matlab└── matlab├── Bc.m├── CellSearch.m├── PSS_detection_correction.m├── Tc.m├── absx2.m├── add_header_to_bin.m├── add_h…

php過氣了嗎,留幾手 留幾手過氣原因

1、很多時候,人們做事情只是為了自己,沒有任何理由,沒有任何結果,只是為了滿足一些內心的期望。2、太理智的人,往往愛到一半,本能地退卻。唯一突出的是他的JB。3、怎樣才能自由地睡去女文藝青年&#xff1f…

live2d PHP,Live2dHistoire_setting.php

if(!defined(EMLOG_ROOT)) {exit(error!);}function plugin_setting_view(){$live2d_setunserialize(ltrim(file_get_contents(dirname(__FILE__)./live2d.com.php),<?php die; ?>));?>KEY&#xff1a;音樂1&#xff1a;音樂2&#xff1a;音樂3&#xff1a;音樂4&a…

mysql 遠程load data,PyMySQL將(文件)數據加載到遠程MySQL實例時發生錯誤/異常

我正在使用PyMySQL-0.5.0并在將數據從文件加載到遠程MySQL實例時遇到了一個模糊的錯誤/異常。在執行“loaddatalocalinfile…”語句時&#xff0c;我看到一個異常&#xff0c;它說&#xff1a;The used command is not allowed with this MySQL version。在如果PyMySQL支持此操…

matlab頻率阻抗,有分析阻抗的matlab腳本嗎?

以上來自于谷歌翻譯以下為原文Interesting...- You cross-posted to two forums. I have deleted the other post.- You dont indicate what scope you are using or what you have tried.Most Keysight (and Agilent) scopes have an FFT or Spectrum function available. Hav…

php中修改彈窗的樣式,CSS變形彈窗效果示例

大家都知道&#xff0c;彈出窗體已經是現在網頁常用的一種交互設計&#xff0c;在這個注重交互動畫體驗的時代&#xff0c;網頁彈窗也是可以來點新鮮點子的&#xff0c;比如今天分享的CSS 變形Modal Window。當用戶點擊按鈕時&#xff0c;按鈕將會變成一個全屏的屏幕&#xff0…