2013-03-07 7 views
2

변형 된 uibutton 변경 후 높이 및 setFrame이 작동하지 않습니다. 금후. 도와주세요. 여기에 내 코드 :변형 uibutton 높이 변경

NSLog(@"BEFORE_Frame_height = %f", nameBgBtn.frame.size.height); 
NSLog(@"BEFORE_Bound_height = %f", nameBgBtn.bounds.size.height); 
nameBgBtn.transform = CGAffineTransformMakeRotation(degreesToRadian(rndValue)); 
CGRect newFrame = CGRectMake(nameBgBtn.frame.origin.x,nameBgBtn.frame.origin.y, nameBgBtn.bounds.size.width, nameBgBtn.bounds.size.height); 

[nameBgBtn setFrame: newFrame]; 
[nameBgBtn setBounds:newFrame]; 
NSLog(@"After_Frame_height = %f", nameBgBtn.frame.size.height); 
NSLog(@"After_Bount_height = %f", nameBgBtn.bounds.size.height); 

내 로거 : 당신이 transform을 변경 특히

2013-03-07 15:30:23.887 BEFORE_Frame_height = 46.000000 
2013-03-07 15:30:23.888 BEFORE_Bound_height = 46.000000 
2013-03-07 15:30:23.888 After_Frame_height = 49.887489 
2013-03-07 15:30:23.888 After_Bound_height = 46.000000 

답변

0

, framebounds의 차이가있다. 코드에서 두 가지를 섞어서 결과가 예상 한 것과 다릅니다.

  1. transform을 설정하여 일부 회전을 적용합니다.

  2. 새 프레임 및 boundsorigin의 직사각형을 프레임으로 만듭니다. transform을 사용하면 bounds이 변경되지 않았습니다.

  3. 이 rect을 frame으로 설정합니다. 뷰는 이동하지 않으며 (동일 origin), 외부 치수를 변경하기 때문에 축소됩니다.

  4. 동일한 rect를 bounds으로 설정했습니다. bounds.origin을 0이 아닌 값으로 설정하면 어떻게 될지 모르지만 버튼의 내용은 번역 될 수 있습니다. 또한 bounds.size이 이전과 동일하게 설정되어 있기 때문에 버튼의 크기를 조정합니다.

은 명확하기 :

  • bounds = RECT 좌표 시스템 내 (스크롤 뷰 제외) 보통 제로 origin 원하는 크기. 수퍼 (외측)에
  • = frame는 RECT bounds.size와 동일 할 수있는 originsize와 시스템를 조정. framecenter, boundstransform입니다.
  • transform = bounds이 변형되어 frame이되도록 변형됩니다. 내부 좌표에서 외부 좌표로의 매핑. 당신이 크기 {50, 80}와 버튼이 있고 90 ° 회전을 적용하는 경우

bounds.sizecenter이 변경되지 않습니다, 같은{50, 80}수 있지만 frame는 새로운 변화의 크기 {80, 50}을 반영한다.

지금은 분명히 희망합니다.


업데이트 : 여기 framebounds간에 화상 표시 차이다.
Frame vs. bounds
어두운 정사각형은 bounds이고, 밝은 정사각형은 frame입니다. 첫 번째 이미지의 크기는 같습니다. 두 번째 이미지에서보기는 transform으로 바뀌 었습니다.

+0

저는 4 도가되었습니다. 버튼의 높이가 바뀌지 않았 으면 좋겠다. 나는 어떻게해야합니까? –

+0

높이를 같게하려면'frame'을 변경하지 마십시오. 사실, 당신은'transform'을 제외하고는 아무것도 변경할 필요가 없습니다. '프레임'이 자동으로 커집니다. 이미지로 업데이트 된 답변보기 – Tricertops

+0

나는 당신이 나를 이해하지 못했다고 생각하니? 내 UIButton 변형 후 원래 높이를 변경합니다. 왜, 나 몰라! –