如何在没有Interface Builder的情况下移动现有图像

时间:2012-10-10 09:12:14

标签: iphone xcode uiimageview move

我在不使用界面构建器的情况下创建了多个图像。我用了这段代码:

for (Row* row in parser.rows) {
        CGRect IphoneFrameImageRect;
        IphoneFrameImageRect = CGRectMake(10, 10, 150.0f, 150.0f);
        UIImageView *IphoneFrame = [[UIImageView alloc] initWithFrame:IphoneFrameImageRect];
        NSString *IphoneFrameurl = [NSString stringWithFormat:@"http://some.url.com/iphone/IphoneFrame.png"];
        [IphoneFrame setImage:[UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:IphoneFrameurl]]]];
        [IphoneFrame setTag:(i)];
        IphoneFrame.opaque = YES; // explicitly opaque for performance

        [self.view addSubview:IphoneFrame];
        [IphoneFrame release];
}

我需要将这些图像移动到横向模式中的其他位置。我确实标记了每个图像,看起来我可以使用此标记选择图像。但是我怎样才能给图像一个新的坐标呢?我有这段代码:

-(void)positionViews {
    UIInterfaceOrientation destOrientation = self.interfaceOrientation;

    int i=4; //Picture with tag=4 for example
    UIImage *tempImage=(UIImage *)[self.view viewWithTag:(i)];

    // HOW TO MOVE ??

}

我可以使用以下代码执行此操作:

UIButton *tempButton=(UIButton *)[self.view viewWithTag:i];
[temp setFrame:CGRectMake(x, y, X10ButtonWidth, X10ButtonHeight)];

1 个答案:

答案 0 :(得分:0)

你混合了两个不同的东西/类:

  • UIImage代表图片数据及其像素,在内存中
  • UIImageView代表显示在屏幕上显示图片的视图。

如果您更清楚,UIImage UIImageView NSString UILabel的{​​{1}}是UIImageView。表示数据/内容的对象与可以在屏幕上显示它的视图不同。

因此,当您想要使用自己设置的标记检索图片视图时,您会检索视图,特别是UIImage的重要内容,而不是UIImageView


将您的演员阵容更改为setFrame:,您就可以像对待UIButton一样致电setFrame:(因为UIView是一种方法UIImageView类,UIButtonUIView都是UIImageView *tempImageView = (UIImageView *)[self.view viewWithTag:(i)]; [tempImageView setFrame:...]; }的子类。

viewWithTag:

或者甚至不进行任何演员,因为UIView会返回UIView,如果您只想更改框架,那就是您需要的全部内容:是基本的UIImageView还是具体的如果您只想更改frame属性,UIView或任何类型的视图都无关紧要,因为这是通用UIView类的属性,可以应用于任何UIView 1}},无论UIView *tempImageView = [self.view viewWithTag:(i)]; [tempImageView setFrame:...]; 的具体子类是什么。

{{1}}