簡體   English   中英

XCode Objective-C警告

[英]xcode objective-c warnings

我對Objective-C比較陌生...我正在使用iphone 3.0 SDK

我有一個UIView,它是一個子視圖,我想在某些情況下調整大小。

我的方法是在控制器類中。

例如,

CGSize el = CGSizeMake(30, 40);
[self.subview setSize:el];

上面的代碼確實起作用,但是編譯器發出警告:“ UIView”可能不響應“ setSize:”

在某種程度上,“如果它沒有壞,我不想修復它”,但是我有點擔心我做錯了什么。

關於為什么收到警告以及如何解決警告的任何想法?

TIA

這可能意味着將實現UIView setSize ,但不會在導入到項目中的頭文件中顯示它。 這使它成為未公開的API,即有一天它可能會更改並破壞您的代碼:)

並且很確定,如果您去UIView的文檔,您不會發現對size屬性的任何依賴。 所以我會避免它。

您應該使用的是frame屬性

CGSize el = CGSizeMake(30, 40);
CGRect bounds = CGself.subview.bounds;
bounds.size = el;
CGself.subview.bounds = bounds;

試一試。

正確的做法是使用其他方法代替非公共size屬性。 但是為了討論起見:如果您想擺脫警告,則可以聲明您知道實現文件頂部的size屬性:

#import "MyClass.h"

@interface UIView (private)
- (void) setSize: (CGSize) newSize;
@end

@implementation MyClass
…
@end

編譯器將停止抱怨。

這是對“ myView”使用“ frame”屬性的詳細說明:

[self.myView.frame = CGRectMake(x, y, width, height)];

哪里:

  • x,視圖的左上角坐標,以其父級“ x”坐標的左上角為參考。
  • y,與x相同,但y軸
  • 框架的寬度,水平尺寸
  • 高度,框架的垂直尺寸

IE您擁有一個適合屏幕范圍的視圖,因此其坐標(0,0)將與設備屏幕的左上角相同。 如果您要添加一個幾乎小於屏幕尺寸的子視圖並將其水平和垂直居中,則設置如下:

[self.myView.frame = CGRMake ( 20 , 20 , self.view.frame.size.width-40, self.view.frame.size.height-40);

本示例將框架設置在視圖內部並居中。 請注意,我們減去40對應的寬度:左側20,右側20,對於垂直調整也是如此。

該代碼也可以在縱向和橫向模式下工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM