2013-05-25 5 views
0

Я разрешаю своему окну автоматически просматривать видимый экран. В этом коде нет проблем.NSImageView исчезает без причины

Но проблема здесь. Мне нужно добавить ImageViews в окно, и, конечно же, они также должны иметь возможность изменять размер.

код для создания ImageViews и сделать окно подгонку текущего видимого

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 
    int x,y; 
    NSInteger rowCounter,gapX,gapY; 
    rowNumber=5; 
    rowCounter=0; 
    gapX=0; 
    gapY=0; 
    personNumber=10; 
    startX=20; 
    startY=20; 
    NSRect rect; 
    NSSize size; 
    NSScreen *scren=[NSScreen mainScreen]; 
    rect=scren.visibleFrame; 
    y=rect.size.height; 
    x=rect.size.width; 
    NSLog(@"%s%s%d%s%d","screen"," y size=",y," x size=",x); 
    y=window.frame.size.height; 
    x=window.frame.size.width; 
    NSLog(@"%s%s%d%s%d"," window"," y size=",y," x size=",x); 
    timer1 =[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(resizeWindow1) userInfo:nil repeats:YES]; 
    rahmen=[[NSMutableArray alloc] initWithCapacity:25]; 
    NSPoint p; 
    y=rect.size.height; 
    x=rect.size.width; 
    size.height=y; 
    size.width=x; 
    p.x= rect.origin.x; 
    p.y= rect.origin.y+y; 
    [window setContentSize:size]; 
    [window setFrameTopLeftPoint:p]; 
    width =x-(20*(personNumber/2)); 
    width=(width/(personNumber/2))-(20/(personNumber/2)); 
    NSLog(@"%s%ld","\n width: ",(long)width); 

    high= y-(20*rowNumber); 
    high=high/rowNumber-(20/rowNumber); 
    NSLog(@"%s%ld","\n high: ",(long)high); 
    for (indexRahmen=0; indexRahmen<25;) { 

     if (indexRahmen>0 && indexRahmen%(personNumber/2)==0) { 
      rowCounter=rowCounter+1; 
      gapX=0; 
      gapY=gapY+1; 
     } 
     else if (indexRahmen%(personNumber/2)!=0){ 
      gapX=gapX+1; 
     } 
     if (rowCounter==rowNumber) { 
      rowCounterr=rowNumber-1; 
      gapY=gapY-1; 
     } 

     rect=NSMakeRect(startX+(width*(indexRahmen%(personNumber/2)))+(gapX*20),(startY+(rowCounter*high)+(gapY*20)),width, high); 

     NSImageView *imageView=[[NSImageView alloc] initWithFrame:rect]; 
     imageView.image = [NSImage imageNamed:@"umrandung.png"]; 
     [rahmen insertObject:imageView atIndex:indexRahmen]; 
     [window1view.self addSubview:imageView]; 
     NSLog(@"%s%ld","\n IndexZahl: ",(long)indexRahmen); 
     indexRahmen=indexRahmen+1; 
    } 

} 

действием изменения размеров наречено timer1 почти такой же, за исключением того, что:

NSImageView *imageView= [rahmen objectAtIndex:indexRahmen]; 
    imageView.frame= rect; 
    imageView.image = [NSImage imageNamed:@"umrandung.png"]; 
    [rahmen insertObject:imageView atIndex:indexRahmen]; 

и ImageView не добавляется к subview window1view

и странная вещь, которая происходит, заключается в том, что 1. NSImageView исчезает, но когда я проверяю координаты, они находятся на правильном так что я не знаю, почему он исчезает.

+1

Там причина, почему мы используем английский язык везде (даже в именах переменных);) Если они имеют смысл они говорят другим разработчикам много о том, что вы хотите сделать/означать. * Я понимаю, что вы имеете в виду, но есть миллионы других разработчиков, которые не имеют ни малейшего представления о том, что вы думаете в своем коде;) – HAS

+1

Я изменил теперь имена переменных – killerwakka

ответ

0

Я узнал, как это исправить.

Я использовал вместо создания ImageView с:

[rahmen objectAtIndex:indexRahmen]; 

я использовал:

for (NSImageView* ImageView in rahmen) 

и он работает отлично с этим.

К сожалению, я не знаю, почему он исчез с другим методом