resizing content UITableviewcell in landscape

喜夏-厌秋 提交于 2019-12-05 19:45:02
Jonathan

Thanks for this sharing. This is a great idea having a method to set-up the UITableViewCell. But I figured out that the content of a uitableviewcell can rezise with just this code line:

tituloLabelText.autoresizingMask = ( UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
tituloLabelText.text = @"A Large text resides here";
[tituloLabelText setNumberOfLines:2];
[tituloLabelText setLineBreakMode:UILineBreakModeWordWrap];

With just the line of autoresizingMask this allow to the controlls modify their Widht and Height.

i had a similar problem with a custom UITableViewCell and i ended up downloading async the image(like you) and setting it in the imageView provided by Apple's UITableViewCell(not in a custom imageView added as a subview).

For the label that needed to be resized(the text was longer than one row in portrait) i set the text in the default textLabel and it was resized automatically. I also had a second label that contained a date(the text was short and didn't needed resizing),ni added it as a subView to the content view of the cell.

Initially i did what you did in the code above.. i setup my uilabels and added them as subviews but i discovered that the orientation changes alerts didn't pass to them from the tableView so in landscape didn't looked as i expected..

more about the UITableViewCell you can find here UITableViewCell

in my custom UITableView cell i had a method that set-up the data for the cell...something like this:

    - (void) setData:(Feed *) dict
{
    self.autoresizesSubviews = YES;
    self.imageView.image = [UIImage newImageFromResource:@"noFeedImg.png"];
    self.textLabel.highlightedTextColor = [UIColor whiteColor];
    [[self textLabel] setOpaque:NO];
    [[self textLabel] setBackgroundColor:[UIColor clearColor]];
    [[self textLabel] setText:[dict feedTitle]];
    [[self textLabel] setTextColor:[UIColor blackColor]];
    [[self textLabel] setNumberOfLines:3];
    [[self textLabel] setFont:[UIFont boldSystemFontOfSize:12]];

    [self addSubview:dateLabel];
    dateLabel.text = [dict publishDate];
    dateLabel.frame = CGRectMake(self.contentView.bounds.origin.x + 125, 100, 175, 14);
    self.URL = [dict feedURL];

    [imageLoader loadImageFromURL:[NSURL URLWithString:@"http://www.google.com"] withCallbackTarget:self withCallbackSelector:@selector(setupImage:)];
}

in the cellForRowAtIndexPath after creating the cell:

FeedTableViewCell *cell = [[[FeedTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

and after that setup the info that the cell will display:

[cell setData:[feedsList objectAtIndex:feedIndex]];

hope this will help you.

If you have custom cell hooked up in the IB autoresizingMask = UIViewAutoresizingFlexibleWidth does not work for some reason.

I resize my custom cells when the view is loaded and disable view rotation. This code works on iPhone. iPad needs +256 I think, but never tested

- (void)viewDidLoad
  {
    [super viewDidLoad];

    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight) {
    CGRect newFrame = customCell.frame;
    newFrame.size.width = newFrame.size.width+160;
    customCell.frame = newFrame;
  }
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return NO;
}
tryp

You can use this simple line on the shouldAutorotateToInterfaceOrientation method :

self.view.autoresizesSubviews = YES;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!