I am using EMCCountryPickerController ( https://github.com/emcrisostomo/EMCCountryPickerController ) for Country Picker in app Development. It is working good in iOS7. But it crashed because of LayoutGuide which is not available in iOS6. I am not sure how to change this code to work in iOS6.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
[self validateSettings];
[self loadCountries];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:rootView
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:rootView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:countryTable
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:searchBar
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:rootView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:countryTable
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:rootView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:countryTable
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]];
[rootView addConstraint:[NSLayoutConstraint constraintWithItem:self.bottomLayoutGuide
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:countryTable
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0]];
}
It works in both iOS 6.1 & 7 after replacing self.topLayoutGuide & self.bottomLayoutGuide with self.view.
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { [rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1 constant:0]]; }else{ [rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:0]]; } [rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:rootView attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]]; [rootView addConstraint:[NSLayoutConstraint constraintWithItem:searchBar attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:rootView attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; [rootView addConstraint:[NSLayoutConstraint constraintWithItem:countryTable attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:searchBar attribute:NSLayoutAttributeBottom multiplier:1 constant:0]]; [rootView addConstraint:[NSLayoutConstraint constraintWithItem:rootView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:countryTable attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]]; [rootView addConstraint:[NSLayoutConstraint constraintWithItem:rootView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:countryTable attribute:NSLayoutAttributeLeading multiplier:1 constant:0]]; if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { [rootView addConstraint:[NSLayoutConstraint constraintWithItem:self.bottomLayoutGuide attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:countryTable attribute:NSLayoutAttributeBottom multiplier:1 constant:0]]; }else{ [rootView addConstraint:[NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:countryTable attribute:NSLayoutAttributeBottom multiplier:1 constant:0]];