2012-05-07 9 views
0

受け取った機能のために非表示になる画像がいくつかあるUIViewがあります。私は周りを探索しているし、それらのすべてを中心にするために、これらのUIImageViewを再配置する方法を見つけていません。一部が隠されているときにビューにUIImageViewsを配置する

私は、次の行があれば、私は意味:

|X||X||X||X||X||X||X| 

をし、私は2番目と私は

|X||X||X||X||X| 

を表示したい5番目の要素を非表示にしますが、私は

|X| |X||X| |X||X| 
を取得

これを制御するためのUIViewプロパティがあるか、または手動で別のUIViewを作成するか、要素を追加する必要があります私のコードではプログラム的に?今私は私のUIImageView要素の隠しプロパティを使用しています。

ありがとうございます!

+0

私は、私がその投稿で見たようにプログラムで行うべきだと思います。http://stackoverflow.com/questions/3175816/show-hide-iphone-ui-elements-based-on-prefs-how-to 、そうは思わない? – Kasas

答えて

2

mbm30075コード@変更後の最終的な解決策は以下の通りです:

- (void)centerVisibleViews{ 

int visibleViews = 0; 
for (int i = 0; i < [[self imgViews] count]; i = i + 1) { 
    if (![(UIView *)[[self imgViews] objectAtIndex:i] isHidden]) { 
     visibleViews = visibleViews + 1; 
    } 
} 
if(visibleViews==0) return; 

float screenWidth = imgAnimals.superview.bounds.size.width; 
//float maxWidthImage = screenWidth/visibleViews; 

float imgWidth = [imgAnimals frame].size.width; 

// Make it sexy with an animation!!! 
[UIView animateWithDuration:1.0 
       animations:^{ 
        float offset = screenWidth/2.0 - (visibleViews * imgWidth/2.0); 
        for (int i = 0; i < [[self imgViews] count]; i = i + 1) { 
         UIView *thisView = [[self imgViews] objectAtIndex:i]; 
         if (![thisView isHidden]) { 
          CGRect rect = [thisView frame]; 
          rect.origin = CGPointMake(offset, 0); 
          [thisView setFrame:rect]; 
          offset = offset + rect.size.width; 
         } 
        } 
       } 
]; 

} 

の事は私がUIImageViewsに割り当てられた固有の幅を使用したいとちょうど真ん中にすべて一緒にセンタリングということです。誰にも助けて欲しい!

ありがとうございます!

2

サイズをお試しください! ;-)

ViewController.h

#define BUFFER 10 
#define WIDTH 90 
#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
@property (strong, nonatomic) NSMutableArray *ViewArray; 
- (IBAction)hideViews:(id)sender; 
- (void)centerVisibleViews; 
@end 

ViewController.m

#import "ViewController.h" 
@implementation ViewController 
@synthesize ViewArray; 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSMutableArray *colorArray = [NSMutableArray array]; 
    [colorArray addObject:[UIColor redColor]]; 
    [colorArray addObject:[UIColor orangeColor]]; 
    [colorArray addObject:[UIColor yellowColor]]; 
    [colorArray addObject:[UIColor greenColor]]; 
    [colorArray addObject:[UIColor blueColor]]; 
    [colorArray addObject:[UIColor purpleColor]]; 
    [colorArray addObject:[UIColor blackColor]]; 
    [self setViewArray:[NSMutableArray array]]; 
    for (int i = 0; i < 7; i = i + 1) { 
     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(BUFFER + ((WIDTH + BUFFER) * i), BUFFER, WIDTH, WIDTH)]; 
     [view setBackgroundColor:[colorArray objectAtIndex:i]]; 
     [[self ViewArray] addObject:view]; 
     [[self view] addSubview:view]; 
    } 
} 
- (IBAction)hideViews:(id)sender { 
    for (int i = 0; i < [[self ViewArray] count]; i = i + 1) { 
     if (i == 1 || i == 4) { 
      [(UIView *)[[self ViewArray] objectAtIndex:i] setHidden:YES]; 
     } 
    } 
    [self centerVisibleViews]; 
} 
- (void)centerVisibleViews { 
    int visibleViews = 0; 
    for (int i = 0; i < [[self ViewArray] count]; i = i + 1) { 
     if (![(UIView *)[[self ViewArray] objectAtIndex:i] isHidden]) { 
      visibleViews = visibleViews + 1; 
     } 
    } 
    float totalWidth = (BUFFER * 2) + (WIDTH * [[self ViewArray] count]) + (BUFFER * ([[self ViewArray] count] - 1)); 
    float visibleWidth = (BUFFER * 2) + (WIDTH * visibleViews) + (BUFFER * (visibleViews - 1)); 
    // Make it sexy with an animation!!! 
    [UIView animateWithDuration:1.0 
        animations:^{ 
         float offset = (totalWidth - visibleWidth)/2.0; 
         for (int i = 0; i < [[self ViewArray] count]; i = i + 1) { 
          UIView *thisView = [[self ViewArray] objectAtIndex:i]; 
          if (![thisView isHidden]) { 
           [thisView setFrame:CGRectMake(offset, BUFFER, WIDTH, WIDTH)]; 
           offset = offset + WIDTH + BUFFER; 
          } 
         } 
        } 
    ]; 

} 
@end 

行うための唯一の事は、メインビューにボタンを追加し、それを結ぶですIBOutletに私のiPadシミュレータでニースとかなり。

+0

あなたの助けていただきありがとうございます、私はいくつかのものを変更して、私はそれを動作させました...私は私のソリューションを投稿します;) – Kasas

関連する問題