IOS UITextView內(nèi)容垂直居中方法

感謝兩位@八條8tiao 和@SAW 兩位大神提醒鹦付,內(nèi)容又完善了下,加了下注釋。注釋內(nèi)容是自己理解的坚踩,如果有錯的地方墓阀,還請路過大神不吝賜教毡惜!

最近在做的項目中需要textView的文字內(nèi)容居中。以為很簡單斯撮,一句代碼或者在xib中簡單設(shè)置就可以搞定的事情经伙,結(jié)果遠(yuǎn)比想象中的難。網(wǎng)上找了好多方法勿锅,要么太復(fù)雜帕膜,要么根本不好使枣氧。結(jié)果找到這位大神的方法,簡單易用垮刹、效果還好达吞,貼上來分享給大家:

textview默認(rèn)樣式.png
- (void)contentSizeToFit
{
    //先判斷一下有沒有文字(沒文字就沒必要設(shè)置居中了)
    if([self.textView.text length]>0)
    {
        //textView的contentSize屬性
        CGSize contentSize = self.textView.contentSize;
        //textView的內(nèi)邊距屬性
        UIEdgeInsets offset;
        CGSize newSize = contentSize;
        
        //如果文字內(nèi)容高度沒有超過textView的高度
        if(contentSize.height <= self.textView.frame.size.height)
        {
            //textView的高度減去文字高度除以2就是Y方向的偏移量,也就是textView的上內(nèi)邊距
            CGFloat offsetY = (self.textView.frame.size.height - contentSize.height)/2;
            offset = UIEdgeInsetsMake(offsetY, 0, 0, 0);
        }
        else          //如果文字高度超出textView的高度
        {
            newSize = self.textView.frame.size;
            offset = UIEdgeInsetsZero;
            CGFloat fontSize = 18;

           //通過一個while循環(huán)荒典,設(shè)置textView的文字大小酪劫,使內(nèi)容不超過整個textView的高度(這個根據(jù)需要可以自己設(shè)置)
            while (contentSize.height > self.textView.frame.size.height)
            {
                [self.textView setFont:[UIFont fontWithName:@"Helvetica Neue" size:fontSize--]];
                contentSize = self.textView.contentSize;
            }
            newSize = contentSize;
        }
        
        //根據(jù)前面計算設(shè)置textView的ContentSize和Y方向偏移量
        [self.textView setContentSize:newSize];
        [self.textView setContentInset:offset];
        
    }
}

原理:由于textView是繼承自UIScrollview,所以會有ContentSize屬性种蝶。所以可以通過文字內(nèi)容的高度(也就是ContentSize)的高度和textView的高度之間的差值契耿,設(shè)置內(nèi)邊距,就相當(dāng)于把內(nèi)容居中了螃征。

調(diào)用方法后樣式.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搪桂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盯滚,更是在濱河造成了極大的恐慌踢械,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魄藕,死亡現(xiàn)場離奇詭異内列,居然都是意外死亡,警方通過查閱死者的電腦和手機背率,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門话瞧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寝姿,你說我怎么就攤上這事交排。” “怎么了饵筑?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵埃篓,是天一觀的道長。 經(jīng)常有香客問我根资,道長架专,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任玄帕,我火速辦了婚禮部脚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘裤纹。我一直安慰自己委刘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钱雷,像睡著了一般骂铁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罩抗,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天拉庵,我揣著相機與錄音,去河邊找鬼套蒂。 笑死钞支,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的操刀。 我是一名探鬼主播烁挟,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼骨坑!你這毒婦竟也來了撼嗓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤欢唾,失蹤者是張志新(化名)和其女友劉穎且警,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礁遣,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡斑芜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了祟霍。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杏头。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沸呐,靈堂內(nèi)的尸體忽然破棺而出醇王,到底是詐尸還是另有隱情,我是刑警寧澤垂谢,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布厦画,位于F島的核電站疮茄,受9級特大地震影響滥朱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜力试,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一徙邻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畸裳,春花似錦缰犁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颇象。三九已至,卻和暖如春并徘,著一層夾襖步出監(jiān)牢的瞬間遣钳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工麦乞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕴茴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓姐直,卻偏偏與公主長得像倦淀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子声畏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,161評論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案撞叽? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,754評論 1 92
  • 教你36穴保健康 百會穴∶(一提二暖三安神,百病須白百會尋) 太陽穴∶(瀉火醒腦祛頭疾插龄,太陽高懸令目明) 四白穴∶...
    菡丹閱讀 536評論 0 1
  • 中國的飛人 完成國人 征服世界的夢想 12秒98 新的世界記錄 已伴隨著五星紅旗 在不斷唱響 陽光帥氣的臉龐 已成...
    莫邪干劍閱讀 212評論 0 0
  • 1能扒、events(事件) 對于大多數(shù)的Node.js核心API采用的是異步事件驅(qū)動的架構(gòu),其中某些類型的對象(觸發(fā)...
    七_(dá)五閱讀 344評論 0 0