直接用 [[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。