最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解iOS 關(guān)于字體根據(jù)不同屏幕尺寸等比適配的問題

 更新時間:2017年06月26日 15:17:43   作者:門前有棵葡萄樹  
這篇文章主要介紹了詳解iOS 關(guān)于字體根據(jù)不同屏幕尺寸等比適配的問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下

背景

去年的六月份開始了一個新的項(xiàng)目,此項(xiàng)目支持的設(shè)備從4S開始一直到6+,也就是說屏幕的尺寸最小的320x480 最大的1242x2208 (不過目前好像大部分的App都會這樣去支持),而客戶那邊有一個奇葩要求 就是所有的控件布局必須依據(jù)屏幕的尺寸等比縮放。當(dāng)然這個對于iOS的開發(fā)來說的話還是比較容易實(shí)現(xiàn)的(iOS有個Autoresizing剛好是依據(jù)父視圖的大小作等比縮放的)。

項(xiàng)目就這樣愉快的進(jìn)行,然而當(dāng)項(xiàng)目快要結(jié)束的時候,客戶憤怒質(zhì)問我們?yōu)槭裁醋煮w大小沒有根據(jù)屏幕作等比適配,再有幾天的時間就要上線了,直到現(xiàn)在才發(fā)現(xiàn)這種天天在眼前晃蕩的問題。。。。

此時我們開發(fā)的內(nèi)心是崩潰的。。。 因?yàn)轫?xiàng)目非常趕時間,客戶要求17天上線第一個版本,所有跟主流程相關(guān)的功能必須實(shí)現(xiàn)。當(dāng)時為了趕時間 加上為了做等比適配,所有視圖全部是用XIB拖出來的 字體都是直接設(shè)置在視圖里面 沒有抽出來 現(xiàn)在要是做字體的等比適配的話 這種大量完全沒有技術(shù)含量的體力活讓人很無力

解決方法

新建一個UIButton的類別 重寫 load 方法 利用OC的運(yùn)行時 對所有的Button Label作處理(一般有文字的大部分是 Button Label)

代碼如下

UIButton+MyFont.h

#import <UIKit/UIKit.h>
#import <objc/runtime.h>

/**
 * 按鈕
 */
@interface UIButton (myFont)

@end

/**
 * Label
 */
@interface UILabel (myFont)

@end

UIButton+MyFont.m

#import "UIButton+MyFont.h"

//不同設(shè)備的屏幕比例(當(dāng)然倍數(shù)可以自己控制)
#define SizeScale ((IPHONE_HEIGHT > 568) ? IPHONE_HEIGHT/568 : 1)

@implementation UIButton (myFont)

+ (void)load{
  Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
  Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
  method_exchangeImplementations(imp, myImp);
}

- (id)myInitWithCoder:(NSCoder*)aDecode{
  [self myInitWithCoder:aDecode];
  if (self) {
    //部分不像改變字體的 把tag值設(shè)置成333跳過
    if(self.titleLabel.tag != 333){
      CGFloat fontSize = self.titleLabel.font.pointSize;
      self.titleLabel.font = [UIFont systemFontOfSize:fontSize*SizeScale];
    }
  }
  return self;
}


@end

@implementation UILabel (myFont)

+ (void)load{
  Method imp = class_getInstanceMethod([self class], @selector(initWithCoder:));
  Method myImp = class_getInstanceMethod([self class], @selector(myInitWithCoder:));
  method_exchangeImplementations(imp, myImp);
}

- (id)myInitWithCoder:(NSCoder*)aDecode{
  [self myInitWithCoder:aDecode];
  if (self) {
    //部分不像改變字體的 把tag值設(shè)置成333跳過
    if(self.tag != 333){
      CGFloat fontSize = self.font.pointSize;
      self.font = [UIFont systemFontOfSize:fontSize*SizeScale];
    }
  }
  return self;
}

@end

實(shí)在不好意思,前段時間有點(diǎn)忙 附上demo地址:https://github.com/ywdonga/FontSizeModify

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS如何讓tableview支持不同種類的cell詳解

    iOS如何讓tableview支持不同種類的cell詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何讓tableview支持不同種類的cell的相關(guān)資料,文中通過示例代碼詳細(xì)的給大家介紹了實(shí)現(xiàn)的兩種方法,對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • iOS字體抖動動畫的實(shí)現(xiàn)代碼

    iOS字體抖動動畫的實(shí)現(xiàn)代碼

    這篇文章主要介紹了iOS字體抖動動畫的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解iOS中集成ijkplayer視頻直播框架

    詳解iOS中集成ijkplayer視頻直播框架

    ijkplayer 是一款做視頻直播的框架, 基于ffmpeg, 支持Android和iOS,本文將詳細(xì)的講一下在iOS中如何集成ijkplayer, 即便以前從沒有接觸過,按著下面做也可以集成成功!下面跟著小編一起來看下吧
    2016-12-12
  • iOS長按UIlabel實(shí)現(xiàn)可復(fù)制功能

    iOS長按UIlabel實(shí)現(xiàn)可復(fù)制功能

    在我們?nèi)粘5拈_發(fā)中經(jīng)常會遇到一些小需求,比如需要長按控件來拷貝控件中得內(nèi)容,所以這篇文章跟大家分享下iOS中長按UIlabel實(shí)現(xiàn)可復(fù)制功能的方法,有需要的朋友們可以參考借鑒。
    2016-09-09
  • iOS10 ATS 配置詳細(xì)介紹

    iOS10 ATS 配置詳細(xì)介紹

    這篇文章主要介紹了iOS10 ATS 配置詳細(xì)介紹的相關(guān)資料,這里舉例說明該如何配置,需要的朋友可以參考下
    2016-12-12
  • IOS代碼修改音量實(shí)例詳解

    IOS代碼修改音量實(shí)例詳解

    這篇文章主要介紹了IOS代碼修改音量實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • iOS實(shí)現(xiàn)點(diǎn)擊微信頭像(放大、縮放、保存)效果

    iOS實(shí)現(xiàn)點(diǎn)擊微信頭像(放大、縮放、保存)效果

    最近公司產(chǎn)品需要實(shí)現(xiàn)點(diǎn)擊個人主頁頭像可以放大頭像、縮放頭像、保存頭像效果(和點(diǎn)擊微信個人頭像類似),故找個時間實(shí)現(xiàn)一下,記錄下來,供自己查看也給有需要的大家做個參考。下面來一起看看吧。
    2017-03-03
  • UIWebView控件中字體大小和字體樣式的修改

    UIWebView控件中字體大小和字體樣式的修改

    本文主要介紹了UIWebView控件中字體大小和字體樣式的修改,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • iOS中block變量捕獲原理詳析

    iOS中block變量捕獲原理詳析

    這篇文章主要給大家介紹了關(guān)于iOS中block變量捕獲原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • iOS App設(shè)計模式開發(fā)之適配器模式使用的實(shí)戰(zhàn)演練

    iOS App設(shè)計模式開發(fā)之適配器模式使用的實(shí)戰(zhàn)演練

    這篇文章主要介紹了iOS App設(shè)計模式開發(fā)之適配器模式的使用實(shí)例,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下
    2016-03-03

最新評論

静海县| 哈巴河县| 濉溪县| 雷州市| 长阳| 阿城市| 青海省| 罗田县| 中西区| 雷山县| 西和县| 巴青县| 云南省| 区。| 渭源县| 乐至县| 宝鸡市| 十堰市| 东乌珠穆沁旗| 伊金霍洛旗| 贡觉县| 永修县| 邓州市| 元朗区| 招远市| 佳木斯市| 磐安县| 定日县| 合江县| 京山县| 嘉鱼县| 应用必备| 托里县| 阳信县| 盘山县| 博白县| 峨边| 明溪县| 广平县| 德格县| 伊宁市|