我将UIImageView放在我的场景对象库中,并给它一个图像并在.h文件中定义OUTLET。现在我想检查它的坐标,或中心点,或框架X,Y,宽度,高度。 我在用 此
CGRect newFrameSize = CGRectMake(recycleBin.frame.origin.x, recycleBin.frame.origin.y,
recycleBin.frame.size.width, recycleBin.frame.size.height);
或
CGRect newFrameSize = recycleBin.frame;
使用此
NSLog(@"%@", NSStringFromCGRect(newFrameSize));
给出的结果与
相同2013-01-16 21:42:25.101 xyzapp [6474:c07] {{0,0},{0,0}}
我希望在加载viewcontroller时它的实际位置和大小,所以当用户点击图像视图时,它会通过向用户放大而淡出,并且会消失,当用户点击重置按钮时,它会淡入并放大回到原始形式(与上一个动画相反)。 还给我提示,如何在UIImageView或任何按钮或标签上执行此动画。 THX
答案 0 :(得分:1)
很遗憾,您无法检查-viewDidLoad
中IB中设置的项目实际框架。您最早可以检查它(我发现)是通过覆盖-viewDidAppear:
。但是,由于-viewDidAppear:
可以在视图的整个生命周期中多次调用,因此您需要确保没有保存它处于修改状态的帧。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if(savedFrame == CGRectZero) {
savedFrame = self.recycleBin.frame;
NSLog(@"Frame: %@", NSStringFromCGRect(savedFrame));
}
}
其中savedFrame
是成员变量(或者您可以将其作为属性)。
根据您想要的动画描述,听起来调整框架不是解决问题的方法。听起来你想要获得视图拉伸和淡出的效果(以及重置时的反向)?如果是这样的话,那些像这样的代码可能更像你正在寻找的......
淡出:
float animationDuration = 2.0f; // Duration of animation in seconds
float zoomScale = 3.0f; // How much to zoom in duration the animation
[UIView animateWithDuration:animationDuration animations:^{
CGAffineTransform transform = CGAffineTransformMakeScale(zoomScale, zoomScale);
self.recycleBin.transform = transform;
self.recycleBin.alpha = 0; // Make fully transparent
}];
然后,重置视图:
float animationDuration = 2.0f; // Duration of animation in seconds
[UIView animateWithDuration:animationDuration animations:^{
CGAffineTransform transform = CGAffineTransformMakeScale(1.0f, 1.0f);
self.recycleBin.transform = transform;
self.recycleBin.alpha = 1.0; // Make fully opaque
}];
您可以使用数字来查看是否获得了所需的效果。 iOS中的大多数动画实际上都非常简单。此代码适用于任何UIView子类。
答案 1 :(得分:0)
听起来好像您的IBOutlet没有附加到您的班级。
打开视图控制器头文件(如果这是属性声明的位置)并查看声明:
请注意,在第一个IBOutlet上,如何填充圆圈(行号左侧)。这意味着它已连接到您的场景。但是,第二个不是(圆圈没有填写)。