2013-09-02 7 views
36

UIView가 있는데 사용자가 단추를 터치 할 때 크기를 변경하고 싶습니다.프로그래밍 방식으로 UIView 크기 변경

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self setFrame:newFrame]; 

CGRect newFrame = self.searchField.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
self.searchField.frame=newFrame; 

아무 것도 변경하지 마십시오. 고정 너비와 높이를 UIView로 설정하고 싶습니다.

+0

을이 뷰의 구현 파일에 제어 장치? –

+0

@Tim Bodeit 예. – onivi

답변

71

정확하게 이해하면 self.myview의 크기를 변경하고 싶습니다. 그러나 어떤 시점에서 당신은 그것의 프레임을 설정하고 있습니다. 대신보기 컨트롤러 및 일부 검색 필드에서 sendFrame:을 호출하려고합니다. 나는 이전의 컴파일러 오류를주지 않았다는 것에 놀랐다.

시도 :

CGRect newFrame = self.myview.frame; 

newFrame.size.width = 200; 
newFrame.size.height = 200; 
[self.myview setFrame:newFrame]; 
+1

downvoter가 이유를 언급하는 데 신경을 썼겠습니까? –

+4

해당 코드가 UICollectionView에 아무런 영향을 미치지 않는 것 같습니다. – Gerry

+0

@Gerry : UICollectionView에서 작동합니다. 컬렉션보기 내부의 셀에서는 작동하지 않지만 이들의 크기는 뷰 자체가 아니라 컬렉션 뷰에 사용되는 레이아웃에 의해 설정됩니다. UICollectionViewDelegateFlowLayout 프로토콜의 collectionView : layout : sizeForItemAtIndexPath를 살펴보십시오. –

5
view.frame = newframe; 

또는

내 경우
view.center = newcenter; 
4

, 내보기의 폭에 제약이 있었다, 그래서 팀 말했듯이 나는 폭을 변경할 수 .

내가 한 일은 : 예를 들어 myviewWidthConstraint이라고 불리는 콘센트에 콘센트를 만들었습니다. 그럼 난 이런 내 생각의 폭을 변경하려면이 콘센트를 사용 :

이 크기 필드는 읽기 전용
mycell.myviewWidthConstraint.constant = newSize; 
0

, 단지 새로운 만들기 -

//Set height 
let f = view.frame;  //Grab current 
view.frame = CGRect(x: f.origin.x, y: f.origin.y, width: f.width, height: 200); 
관련 문제