首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 獲取 UIImageView 實際圖片尺寸:先設置圖片再讀取 frame

     編輯:程式設計綜合問答

直接用 [[UIImageView alloc] initWithFrame:...] 創建的 ImageView 沒有圖片,其 size.width/height 為 0。必須先設置 image 屬性,或用 initWithImage: 初始化,才能獲取實際尺寸。

錯誤做法

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(25, 5, imgView.size.width, imgView.size.width)];
// imgView 此時無圖片,size 為 0,frame 錯誤

正確做法

// 1. 先加載圖片
UIImage *img = [UIImage imageNamed:@"your_image.png"];

// 2. 用圖片初始化 ImageView,自動適配尺寸
UIImageView *imgView = [[UIImageView alloc] initWithImage:img];

// 3. 再調整位置(尺寸已由圖片決定)
imgView.frame = CGRectMake(25, 5, imgView.frame.size.width, imgView.frame.size.height);

// 或:先創建再設置圖片
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectZero];
imgView.image = img;
// 此時 imgView.frame.size 仍為 0,需呼叫 sizeToFit 或手動設置 frame
[imgView sizeToFit]; // 自動調整 frame 適應圖片
imgView.frame = CGRectMake(25, 5, imgView.frame.size.width, imgView.frame.size.height);

關鍵點

  • initWithImage: 會自動設置 frame.size = image.size。
  • sizeToFit 根據當前 image 調整 frame。
  • 若需縮放顯示,設置 contentMode(如 UIViewContentModeScaleAspectFit)並手動指定 frame。

記住:有圖片才有尺寸,先賦值 image 再讀 frame。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved