Iphone 如何在没有界面生成器的情况下移动现有图像
我没有使用interface builder创建了多个图像。我使用了以下代码:Iphone 如何在没有界面生成器的情况下移动现有图像,iphone,xcode,uiimageview,move,Iphone,Xcode,Uiimageview,Move,我没有使用interface builder创建了多个图像。我使用了以下代码: for (Row* row in parser.rows) { CGRect IphoneFrameImageRect; IphoneFrameImageRect = CGRectMake(10, 10, 150.0f, 150.0f); UIImageView *IphoneFrame = [[UIImageView alloc] initWithFrame:Ipho
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)];
您混淆了两种不同的事物/类别:
表示内存中的图像数据及其像素UIImage
表示要在屏幕上显示图像的视图ui图像视图
UIImage
是指UIImageView
什么是NSString
是指UILabel
。表示数据/内容的对象与可在屏幕上显示它的视图不同
因此,当您想使用设置的标记检索imageview时,您可以检索一个视图,尤其是一个UIImageView
,以了解重要的内容,而不是UIImage
将您的cast更改为
UIImageView
,您将能够在其上调用setFrame:
,方法与调用UIButton
的方法相同(因为setFrame:
是UIView
类的一种方法,UIImageView
和UIButton
都是UIView
的子类)
或者甚至不执行任何强制转换,因为viewWithTag:
返回一个UIView
,如果您只想更改帧,这就是您所需要的:无论它是基本UIView
还是具体地说是UIImageView
或任何类型的视图,如果您只想更改frame
属性,都无所谓,因为这是泛型UIView
类的一个属性,可以应用于任何UIView
,无论它是UIView
的任何特定子类
UIView *tempImageView = [self.view viewWithTag:(i)];
[tempImageView setFrame:...];
tempImage不应该是UIImageView吗?如果将其更改为UIImageView,您应该能够像使用按钮一样调用setFrame。
UIView *tempImageView = [self.view viewWithTag:(i)];
[tempImageView setFrame:...];