繁体   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