开发者

Set UIImageView Size?

开发者 https://www.devze.com 2022-12-27 16:30 出处:网络
i have following problem: i generate subviews UIView in an UIScrollView including UIImageViews. NSArray *bilder = [[NSArray alloc] initWithObjects:@\"lol.jpg\", @\"lol2.jpg\", nil];

i have following problem: i generate subviews UIView in an UIScrollView including UIImageViews.

NSArray *bilder = [[NSArray alloc] initWithObjects:@"lol.jpg", @"lol2.jpg", nil];
NSArray *added = [[NSMutableArray alloc] init];
UIImageView *tmpView;

for (NSString *name in bilder) {
    UIImage *image = [UIImage imageNamed:name];
    tmpView = [[UIImageView alloc] initWithImage:image];
    tmpView.contentMode = UIViewContentModeScaleAspectFit;
    tmpView.frame = CGRectMake(0, 0, 300, 300);

    [added addObject:tmpView];

    [tmpView release];
}

CGSize framy = mainFrame.frame.size;

NSUInteger x = 0;

for (UIView *view in added) {
    [mainFrame addSubview:view];
    view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width);
}

mainFrame.scrollEnabled = YES;
mainFrame.pagingEnabled = YES;
mainFrame.contentSize = CGSizeMake(framy.height * [added count], framy.width);
mainFrame.backgroundColor = [UIColor blackColor];

i get image file names out of an arra开发者_Python百科y. now i want to resize the imageview to a specific size, but it won't work. any advice?

thanks + regards


UIImage lacks the setSize: method of NSImage, but this post seems to add a scaleToSize: method using a category on UIImage.


Change tmpView.frame to use a new CGRect:

tmpView.frame = CGRectMake(tmpView.frame.origin.x,
                           tmpView.frame.origin.y,
                           newWidth,
                           newHeight);


What I see is:

view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width);

But if you look at CGRectMake...

Declaration: CGRect CGRectMake (
   CGFloat x,
   CGFloat y,
   CGFloat width,
   CGFloat height
);

You are setting the X value, not the Y value. I expect, based on your later call to:

mainFrame.contentSize = CGSizeMake(framy.height * [added count], framy.width);

that you intend to make the these images appear on top of each other, not side by side.

Suggest:

view.frame = CGRectMake(framy.height * x++, 0, framy.height, framy.width);

to

view.frame = CGRectMake(0,framy.height * x++, framy.height, framy.width);
0

精彩评论

暂无评论...
验证码 换一张
取 消