2016-06-20 1 views
1

여기에 CGRectMake를 사용하여 UIButton을 만들었습니다.이 버튼은 인물 모드에 완벽하게 보이고 원하는대로 고정되어 있습니다. 하지만, 방향을 변경하면 가로 방향 버튼 위치가 바뀝니다. 어떻게 해결할 수 있을까요?어떻게 CGRectMake를 사용하여 다른 장치 크기에 대한 버튼 위치를 수정할 수 있습니까?

UIButton *button=[[UIButton alloc]initWithFrame:CGRectMake(216, 130, 64, 30)]; 
[button addTarget:self action:@selector(yourEditButtonClicked:) forControlEvents:UIControlEventTouchUpInside];  button.tag = indexPath.row; 
[button setImage:[UIImage imageNamed:@"btn-details.png"] forState:UIControlStateNormal]; 
[cell.contentView addSubview:button]; 

NSLog(@"sender.tag cell is%ld ",(long)button.tag); 
+0

어쨌든 CGRectMake를 사용하는 대신 자동 레이아웃을 사용합니다. CGRectMake를 사용하는 방법을 제공합니다. –

+0

@StanlyMoses 어떤 도움도 받으실 수 있습니다 – vicky

+0

버튼에 정적 프레임을 줄 필요가 없습니다. 자동 레이아웃을 사용하거나 프레임을 설정할 수 있습니다. 다른 컨트롤을 사용하여 동적으로 만들 수 있습니다. –

답변

1

은 XIB, 드래그 버튼에서 다음과 같은

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 

#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width) 
#define SCREEN_HEIGHT ([[UIScreen mainScreen] bounds].size.height) 
#define SCREEN_MAX_LENGTH (MAX(SCREEN_WIDTH, SCREEN_HEIGHT)) 
#define SCREEN_MIN_LENGTH (MIN(SCREEN_WIDTH, SCREEN_HEIGHT)) 

#define IS_IPHONE_4_OR_LESS (IS_IPHONE && SCREEN_MAX_LENGTH < 568.0) 
#define IS_IPHONE_5 (IS_IPHONE && SCREEN_MAX_LENGTH == 568.0) 
#define IS_IPHONE_6 (IS_IPHONE && SCREEN_MAX_LENGTH == 667.0) 
#define IS_IPHONE_6P (IS_IPHONE && SCREEN_MAX_LENGTH == 736.0) 

을 매크로를 정의하고 XIB 안에 넣어. XIB의 화면 너비와 높이의 크기를 조정하고 다양한 화면 크기의 폭, 높이, X, Y 위치 아래 다양한 화면 폭과 height.Note의 다양한에 대한 귀하의 버튼을 배치 한 다음 다음 코드를 사용

UIButton *button; 
//use x,y,width,height values relative to the values you have noted previously and pass them in the following parameters 

     if (IS_IPHONE_4_OR_LESS || IS_IPHONE_5) 
     { 
     button =[[UIButton alloc]initWithFrame:CGRectMake(x, y, width, height)]; 
     } 
     else if (IS_IPHONE_6) 
     { 
     button =[[UIButton alloc]initWithFrame:CGRectMake(x, y, width, height)]; 

     } 
     else if (IS_IPHONE_6P) 
     { 
     button =[[UIButton alloc]initWithFrame:CGRectMake(x, y, width, height)]; 

     } 


[button addTarget:self action:@selector(yourEditButtonClicked:) forControlEvents:UIControlEventTouchUpInside];  button.tag = indexPath.row; 
[button setImage:[UIImage imageNamed:@"btn-details.png"] forState:UIControlStateNormal]; 
[cell.contentView addSubview:button]; 

NSLog(@"sender.tag cell is%ld ",(long)button.tag); 
+0

도움에 감사드립니다. iPads에도 똑같이해야합니까? – vicky

1

위치 0에 설정된 단추에 수직/수평 구속 조건을 적용한 다음 구속 조건을 클릭하고 배율을 조정하여 (0-2 범위에서) 뷰를 비례 적으로/수퍼 뷰 전체에 배치합니다.

관련 문제