2012-02-18 25 views
14

Tôi là người mới nên câu hỏi của tôi có thể thực sự rõ ràng, nhưng tôi đã không tìm thấy bất kỳ giải pháp cho đến nay.Cách đặt kích thước khung UIScrollView theo lập trình?

Tôi đã làm trong IB UIScrollView và kết nối với Chủ sở hữu tệp. Tôi muốn đặt kích thước khung hình của UIScrollView của tôi (có tên là ScrollView).

const CGFloat BoardWidth = 320; 
const CGFloat BoardHeight = 400; 

//I tried this way but 'Expression is assignable' - said Xcode 
ScrollView.frame.size.width = BoardWidth; 
ScrollView.frame.size.height = BoardWidth; 

Vậy làm cách nào để tôi có thể thiết lập kích thước khung ScrollView dễ dàng nhất?

+5

Để tham khảo trong tương lai: theo quy ước trong Objective-C, tên lớp bắt đầu bằng chữ cái viết hoa, trong khi các thể loại * và giá trị vô hướng bắt đầu bằng chữ thường. Vì vậy, 'scrollView',' boardWidth' và 'boardHeight' sẽ nhất quán với quy ước. – yuji

Trả lời

15
CGRect scrollFrame = CGRrectMake(x, y, w, h); 
ScrollView.frame = scrollFrame; 

Hoặc nếu bạn chỉ cần thay đổi chiều rộng và chiều cao;

CGRect scrollFrame; 
scrollFrame.origin = ScrollView.frame.origin; 
scrollFrame.size = CGSizeMake(w, h); 
ScrollView.frame = scrollFrame; 

Sửa giữ trung tâm không thay đổi:

CGRect scrollFrame; 
CGFloat newX = scrollView.frame.origin.x + (scrollView.frame.size.width - w)/2; 
CGFloat newY = scrollView.frame.origin.y + (scrollView.frame.size.height - y)/2; 
scrollFrame.origin = CGPointMake(newX, newY); 
scrollFrame.size = CGSizeMake(w, h); 
scrollView.frame = scrollFrame; 
+0

Hm ... Có vẻ ổn, nhưng tôi muốn giữ vị trí x và y như tôi đã đặt trong Trình tạo giao diện. –

+0

Có, hãy thử phương pháp thứ hai mà tôi đã đề xuất. Nó chỉ thay đổi chiều rộng và chiều cao và giữ x và y không thay đổi. Trong thực tế, một CGRect bao gồm một nguồn gốc nơi x và y được lưu trữ, và một kích thước nơi chiều rộng và chiều cao được lưu trữ. – sch

+0

Được rồi, được rồi. Đúng. Không có được nó ở cái nhìn đầu tiên. Nhưng bây giờ nó thay đổi kích thước UIScrollView giữ điểm trên cùng bên trái. Vì vậy, nếu tôi muốn nó luôn được căn giữa, tôi phải căn chỉnh nó ngay bây giờ, đúng không? –

0

sử dụng tài sản contentSize

ScrollView.contentSize = CGSizeMake(320, 520); 

nó cần phải được lớn hơn khung hình cho nó thực sự cuộn.

4

Bạn có thể làm điều đó như dưới đây,

scrollView.frame = CGRectMake(xOrigin,yOrigin,width,height); 

Nếu bạn đang tìm kiếm kích thước nội dung của scrollview sau đó nó như dưới đây,

scrollView.contentSize = CGSizeMake(width,height); 
+0

đặt contentSize theo cách này scrollView không cuộn. –

1
CGRect Frame = ScrollView.frame 

Frame.frame.size.width = BoardWidth; 
Frame.frame.size.width = BoardWidth; 

ScrollView.frame = Frame; 

Vì khung là cấu trúc .. bạn không thể đặt khung của đối tượng trực tiếp .. Bạn sẽ phải tạo một Cgrect và sau đó thao tác nó. Ví dụ:

5

bạn cần thực hiện việc này.

ScrollView.frame = CGRectMake(0, 0, BoardWidth, BoardHeight); 

Sau khi hoàn tất, bạn cũng cần đặt thuộc tính contentSize. Đó là khu vực 'kéo dài' đằng sau khung của UIScrollView của bạn.

Nếu bạn muốn di chuyển chỉ theo chiều ngang:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, BoardHeight); 

Nếu bạn muốn di chuyển chỉ theo chiều dọc:

ScrollView.contentSize = CGSizeMake(BoardWidth, h * BoardHeight); 

Nếu bạn muốn di chuyển cả hai chiều ngang và theo chiều dọc:

ScrollView.contentSize = CGSizeMake(w * BoardWidth, h * BoardHeight); 

trong đó wh là các giá trị chung để khắc phục t chiều rộng và/hoặc chiều cao của bạn.

Nếu bạn muốn cuộn ngang (ví dụ) rời rạc (ví dụ: bạn có một số trang có cùng kích thước màn hình).

ScrollView.pagingEnabled = YES; 
ScrollView.contentSize = CGSizeMake(p * BoardWidth, BoardHeight); 

nơi p là số trang bạn muốn hiển thị.

Hy vọng điều đó sẽ hữu ích.

+0

Hehe, cảm ơn rất nhiều. Tôi có nó đã viết, thực sự theo cùng một cách. : P –

+0

upvote nếu bạn thích nó ... chúc mừng :) –

Các vấn đề liên quan