2013-08-01 31 views
5

Tôi đã đưa hoạt động chỉLàm thế nào để đặt giữa activityindicator của một tableview

spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
[self.view addSubview:spinner]; 

Nhưng đây không phải tập trung đúng cách trong giao diện bảng. Vì chế độ xem bảng có thể cuộn. Làm thế nào tôi có thể đặt một spinner ở trung tâm của màn hình.

+1

Bạn đang làm cho nó làm trung tâm của màn hình không phải của 'tableView'. Nó sẽ chứa ** chiều cao ** của 'navigaitonBar' và' statusBar'. ** xem bảng có thể cuộn ** không thực hiện bất kỳ ý nghĩa ở đây. – TheTiger

+0

Đối với Swift 3, bạn có thể sử dụng như sau: Vui lòng kiểm tra câu trả lời của tôi trong http://stackoverflow.com/a/41748916/2307418 –

Trả lời

9

thử với mã dưới đây: -

spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
    yourAppdelegateClass *appDelegate = (yourAppdelegateClass*)[[UIApplication sharedApplication] delegate]; 
    [appDelegate.window addSubview:spinner]; 

Mã Output là: -

enter image description here

+0

UIActivityIndicatorView * spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle: UIActivityIndicatorViewStyleWhiteLarge]; spinner.center = CGPointMake ([Màn hình chính UIScreen] .bounds.size.width/2, [màn hình chính UIScreen] .bounds.size.height/2); ; UIWindow * mainWindow = [[UIApplication sharedApplication] keyWindow]; [mainWindow addSubview: spinner]; Điều này làm việc cho tôi. – Susitha

+1

bravo .. đây là điều tương tự bạn UIWindow mainWindow = [[UIApplication sharedApplication] keyWindow]; và đối tượng của appdelegate và bạn nhận được cửa sổ như mệnh mã của tôi ... :) –

4

Hãy thử điều này:

spinner.center = tableview.center; 

Hy vọng nó sẽ giúp !!

+1

Sẽ an toàn hơn nhiều khi sử dụng 'CGPointMake (CGRectGetMidX (self.bounds), CGRectGetMidY (self.bounds)) 'kể từ khi' tableview' của trung tâm là sẽ được liên quan đến nó superview và không chính nó! – Warpling

1

Tôi nghĩ bạn nên thêm chỉ báo của mình (Spinner) trên chế độ xem bảng thay vì sel.view. và xác định khung khu vực trên chỉ báo.

hy vọng điều này sẽ giúp bạn.

1

tôi có một giải pháp khác, vì tôi phải đặt một spinner tại xem chi tiết điều khiển. Có lẽ nó sẽ giúp ai đó.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    self.spinner.hidesWhenStopped = YES; 
    [self.navigationController.view addSubview:self.spinner]; 
} 

Và cho việc định vị:

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    [self.navigationController.view setNeedsLayout]; 
    [self.navigationController.view layoutIfNeeded]; 
    self.spinner.frame = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, 10, 10); 
} 

Spinner sẽ luôn ở tâm chế độ xem bảng tại xem chi tiết điều khiển.

-1

Hãy tìm thấy bên dưới mã:

UIActivityIndicatorView* spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
spinner.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height/2); 
AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
[spinner startAnimating]; 
[appDelegate.window addSubview:spinner]; 
Các vấn đề liên quan