使用接口生成器创建的UILabel的框架原点错误



我很难理解,当我在界面构建器中放置一个UILabel,然后像这样在我的代码中获得坐标:

self.myLabel.frame.origin.x

总是得到0。为什么我把UILabel放在屏幕中央呢?我怎样才能得到正确的坐标?

UILabel正在被添加到UIScrollView中。UIScrollView覆盖了整个iPhone屏幕320X480。UIScrollView是通过界面构建器添加的。

NSLog(@"%f",self.scrollView.bounds.size.height); returns 0

原点总是相对于父视图,在您的例子中是UIScrollViewUIScrollView的工作方式是,它的内容可以有一个固定的原点,但仍然出现在不同的地方,因为内容的大小和偏移量(滚动位置)的变化。

此外,你没有说任何关于UILabel的大小,所以也有可能文本居中,但视图本身要大得多。

同样,你不要说你在代码的哪个地方检查坐标;如果您太早检查它们,它们可能还没有设置。

也许您在将标签添加到视图之前检查它。当您可以在屏幕上看到标签并检查其值时,请尝试在代码中放置一个断点。

你确定自己。myLabel不是nil,你已经正确地连接到你的代码?另外,你是从一个xib文件加载视图,而不仅仅是在视图上使用alloc/init…

如果前面的答案都不能解决你的问题,

确保将接口构建器中的标签与其接口头文件中的IBOutlet连接起来。在这种情况下,头文件应该包含

@property (nonatomic,weak) IBOutlet UIlabel* myLabel;

并使用此属性从接口连接器正确连接

最新更新