2016-05-24 15 views
3

Ich möchte die Breite des UIAlertController-Rahmens erhalten, so dass ich die Breite von UIPickerView und UIToolbar angeben kann, die mit dem UIAlertController geliefert werden.Wie bekomme ich die Rahmenbreite von UIAlertController?

Ich habe versucht, die folgende Anweisung zu verwenden, um die Breite zu erhalten.

alertPicker.view.frame.size.width

Aber ist die Breite genauso wie Viewcontroller ist:

self.view.frame.size.width

Irgendeine Idee, um die Breite des UIAlertController zu bekommen? Danke vielmals.

Dies ist mein Code.

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]; 

Antwort

4

Um die Höhe Sie eine NSLayoutConstraint erstellen müssen zugreifen.

(Swift 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)