iOS 使用xib定義一個View,修改frame無效問題解決

来源:http://www.cnblogs.com/xiaopin/archive/2017/06/27/7085286.html
-Advertisement-
Play Games

遇到過好多次使用自定義view,修改frame無效問題, 之前都是放棄xib,直接手寫,發現手寫簡單的還行,複雜的UI就坑逼了。所以還是需要用到可視化編輯的xib。 整理一下,自己備忘也供iOS開發的朋友參考: 一般我們會直接這樣寫: 這是我一個項目中的代碼,但是這樣出現了一個問題就是iPhone ...


遇到過好多次使用自定義view,修改frame無效問題, 之前都是放棄xib,直接手寫,發現手寫簡單的還行,複雜的UI就坑逼了。所以還是需要用到可視化編輯的xib。

整理一下,自己備忘也供iOS開發的朋友參考:

 

一般我們會直接這樣寫:

XPGovRecUnitView *recUnitView = [[[NSBundle mainBundle] loadNibNamed:@"XPGovRecUnitView" owner:self options:nil] firstObject];
            recUnitView.tag = 10000+i;
            recUnitView.delegate = self;
            recUnitView.frame = CGRectMake(i*89, 0, 89, 139);

  

這是我一個項目中的代碼,但是這樣出現了一個問題就是iPhone 6,6Plus以上的正常, iPhone5s屏幕尺寸的就顯示不正常了。

使用

UIView *recUnitView = [[UIView alloc] initWithFrame:CGRectMake(i*89, 0, 89, 139)];

調試後發現,使用alloc的方式iPhone5也是正常的。但是這樣就要手寫代碼,往這個UIView 添加控制項

 

解決方案:

1. 先把 XPGovRecUnitView.xib這個xib文件的屬性設置一下

  在右側屬性欄中,
  找到Interface Builder Document , 把Use Auto layout的勾去掉
  找到Simulated Metrics , 把Size 設置成None, 沒有None就是Freeform

2.修改XPGovRecUnitView.m代碼 

  

#import "XPGovRecUnitView.h"

@interface XPGovRecUnitView ()
{
    CGRect tempframe;
}


@end

@implementation XPGovRecUnitView

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSArray *nibs=[[NSBundle mainBundle]loadNibNamed:@"XPGovRecUnitView" owner:nil options:nil];
        self=[nibs objectAtIndex:0];
        
        tempframe = frame;
        
        [self initSubViews];
    }
    return self;
}
-(void)drawRect:(CGRect)rect
{
    self.frame = tempframe;
    
}

@end

  

3.使用時代碼

  

XPGovRecUnitView *recUnitView = [[XPGovRecUnitView alloc] initWithFrame:CGRectMake(i*89, 0, 89, 139)];
            recUnitView.tag = 10000+i;
            recUnitView.delegate = self;

  

這樣就正常了。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於 微信公眾號:前端呼啦圈(Love-FED) 我的博客:勞卜的博客 知乎專欄:前端呼啦圈 前言 由於vue相對來說比較平緩的學習過程和新穎的技術思路,使其受到了廣大前後端開發者的青睞,同時其通俗易懂的API和數據綁定的功能也為其攬獲了不少用戶。本文主要講解vue項目的構建與實戰,因此不會太多涉及 ...
  • 今天的輪播圖,和往常的有一點點不同哦!可以說是有一點點的3D效果!因為他在運動的時候,是以正方體的樣子左右滾動的; 先引插件: <link rel="stylesheet" href="swiper.css"> <script src="swiper.js"></script> 然後還是那句話:翠花 ...
  • 一直恐懼讀源碼,哪怕是一個簡單的庫也是讀百來行遇到難點就放棄了。對於新的東西也僅僅是知道它拿來乾什麼,社區資源在哪裡,要用時就突擊文檔資源使用即可。未有過深入之心,亦或者有過深入之心兩三天就廢掉。 這兩日安靜下來思考,覺得自己毛病不少,卻還是不甘於平庸。那麼只能選擇面對自己做出改變,越是恐懼,越是應 ...
  • <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style type="text/css">body { margin: 0;}#wrap { margin: 30px auto; ...
  • 1.定義 DOCTYPE標簽是一種標準通用標記語言的文檔類型聲明,目的是要告訴標準通用標記語言解析器,它應該使用什麼樣的文檔類型定義(DTD)來解析文檔。 <!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標簽之前。 2.作用 聲明文檔的解析類型(document.com ...
  • CSS實現水平垂直居中對齊 在CSS中實現水平居中,會比較簡單。常見的,如果想實現inline元素或者inline block元素水平居中,可以在其父級塊級元素上設置 實現;如果想實現塊級元素的水平居中對齊,可以設置 。而如果想實現垂直居中對齊,或許就不太容易。 以下,我總結了一些實現水平垂直居中對 ...
  • 公司性質的: | 公司 | 地址 | | | | | 美團 | "http://tech.meituan.com/archives" | 個人博客: | 博主 | 地址 (斜體的技術文章較少)| | | | | 王巍(onevcat) | "https://onevcat.com/ blog" | ...
  • 1. 基本功能預覽 2.基本功能 本次封裝的表單組件,分為單行和2行 兩種情況; 兩種組件 都有設置圖片lable、標題 (title)、按提示(hint)、文案(text)、內容距邊間距離(padding)這些通用功能; 其次,單行表單組件 還可以允許文本輸入、設置標題(title),以及文案(t ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...