2010-05-09 5 views
2

크기를 조정할 UIScrollView 안에 UIView가 있습니다.UIView 크기 조정 - 위쪽 확장

나는 쉽게 높이를 증가시킬 수있다 :

CGRect frame = self.drawinView.frame; 
frame.size.height += 100; 
self.drawinView.frame = frame; 
self.drawinScrollView.contentSize = CGSizeMake(frame.size.width, frame.size.height); 

그리고 모두가 좋다.

위 코드는 필자가 작성할 수있는 뷰의 하단에 뷰의 새로운 영역을 생성합니다.

이제보기의 크기를 조정하면 방금 만든보기의 새 부분을 다시 칠하기를 원합니다. 나는 전체보기를 다시 칠할 필요가 없다.

그러나! 내가보기의 상단을 확장해야 할 때 나는 어려움에 처해있다.

수행 :

CGRect frame = self.drawinView.frame; 
frame.origin.y -= 100; 
self.drawinView.frame = frame; 
self.drawinScrollView.contentSize = CGSizeMake(500, 600); 

이 작동하지 않습니다.

전체보기를 다시 그릴 필요없이 어떻게 할 수 있습니까?

답변

1

콘텐츠 크기를 원하는 큰 수로 설정할 수 있지만 0,0의 왼쪽 위 모서리보다 왼쪽 또는 위로 스크롤 할 수는 없습니다. -100의 y 값을 가진 뷰가있는 경우 0보다 큰 100px까지 스크롤 할 수 없습니다.

대신에 그 값을 그대로두고 contentOffset을 수직으로 +100으로 설정해야합니다.

예를 들어, 당신이 100 픽셀로 뷰의 크기를 조정하려는 경우

, 당신은이 작업을 수행 할 것입니다 :

CGRect frame = self.drawinView.frame; 
frame.size.height += 100; 
self.drawinView.frame = frame; 
self.drawinScrollView.contentSize = CGSizeMake(frame.size.width, frame.size.height); 
self.drawinScrollView.contentOffset = CGPointMake(0,100); 

을 당신 것 몇 가지 수동이의 내용을 잠 그려 그 drawinView에게 얼마나 상단 대신보기 하단.

+0

좋아, 그건 이해가된다. 나는 내용물을 아래쪽으로 잠그기 위해 말하는이 drawinView가 전체 캔버스를 다시 채우는 것을 포함 할까? 나는 이것을 피하기를 희망했다. 당신은 다른 방법을 생각할 수 있는가? –

+0

다음 중 어떤 것이 있는지 잘 모르겠습니다. UIView 클래스의 contentMode 속성이 있습니다. UIViewContentModeBottom으로 설정하면보기의 크기를 조정할 때 자동으로 다시 칠해 야하며 어쩌면 맨 위에 표시된 영역에 대해 더러운 사각형으로 만 전달됩니다. 그렇지 않다면, 그 영역을 그리기 만하고 그리기 전에 컨텍스트를 지우지 않을 수 있습니다. (view.clearsContextBeforeDrawing = false) –

+0

좋아, 나는 그것을 시도하지 않았다. 나는 당신이 대답 할 수있는 비트를 받아들이고있다. 내가 대신 한 것은 캔버스 크기를 최대한 늘린 다음 전체 시나리오에서 필요한 스크롤을 수동으로 제한하는 것입니다. 이는 동일한 효과를 주며 조금 더 부드럽게 만듭니다! 이 contentMode로 시간을 얻을 때 볼 것입니다. 도와 주셔서 감사합니다! 8 ^) –

0

위 코드에서보기의 원점 만 변경하고 있습니다. 크기가 아닙니다.

+0

크기를 변경할 수도 있습니다. frame.size.height + = 100; 이 작동하지 않습니다. 뷰의 맨 아래에 영역을 추가합니다. –