我在不使用界面构建器的情况下创建了多个图像。我用了这段代码:
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)];
答案 0 :(得分:0)
你混合了两个不同的东西/类:
UIImage
代表图片数据及其像素,在内存中UIImageView
代表显示在屏幕上显示图片的视图。如果您更清楚,UIImage
UIImageView
NSString
UILabel
的{{1}}是UIImageView
。表示数据/内容的对象与可以在屏幕上显示它的视图不同。
因此,当您想要使用自己设置的标记检索图片视图时,您会检索视图,特别是UIImage
的重要内容,而不是UIImageView
。
将您的演员阵容更改为setFrame:
,您就可以像对待UIButton
一样致电setFrame:
(因为UIView
是一种方法UIImageView
类,UIButton
和UIView
都是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}}