[英]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)];
哪里:
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.