2016-05-24 9 views
3

Я хотел бы получить ширину рамки UIAlertController, чтобы я мог указать ширину UIPickerView и UIToolbar, которые будут поставляться с UIAlertController.Как получить ширину рамки UIAlertController?

Я попытался использовать следующую инструкцию для получения ширины.

alertPicker.view.frame.size.width

Но ширина такой же, как ViewController-х:

self.view.frame.size.width

Любая идея получить ширину UIAlertController? Большое спасибо.

Это мой код.

UIAlertController *alertPicker = [UIAlertController alertControllerWithTitle:nil message:@"\n\n\n\n\n\n\n\n\n\n\n\n" preferredStyle:UIAlertControllerStyleActionSheet]; 

    CGRect pickerFrame = CGRectMake(8, 0, alertPicker.view.frame.size.width, self.view.frame.size.height/2); 
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame]; 
    pickerView.showsSelectionIndicator = YES; 
    pickerView.dataSource = self; 
    pickerView.delegate = self; 

    UIToolbar* pickerToolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(2, 0, alertPicker.view.frame.size.width, 44)]; 
    UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneBtnisClicked:)]; 
    UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    pickerToolbar.items = [[NSArray alloc] initWithObjects:flexSpace,doneBtn,nil]; 

    [alertPicker.view addSubview:pickerToolbar]; 
    [alertPicker.view addSubview:pickerView]; 

ответ

4

Чтобы получить доступ к высоте вам нужно создать NSLayoutConstraint.

(Свифта 3)

let alertController = UIAlertController(title:"Title", message: "Message", preferredStyle: .alert) 


let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (action) in 
    // hide action sheet 
} 
alertController.addAction(cancelAction) 


let height:NSLayoutConstraint = NSLayoutConstraint(item: alertController.view, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: self.view.frame.height * 0.80) 
alertController.view.addConstraint(height); 
self.present(alertController, animated: true, completion: nil)