G'Day парней,Перегруппировка подвиды от 2 линии до 1, в соответствии с ориентацией устройства
Я изначально ориентируюсь на iPhone, с iOS6.1, но намеками и кодом, способным работать без сбоев и на iPhone с iOS5. 1 приветствуется.
У меня есть пользовательские UITableViewCell с 7 различных меток в качестве подвидов:
-(id) initWithStyle: (UITableViewCellStyle) style reuseIdentifier: (NSString*) reuseIdentifier
{
self = [super initWithStyle : style reuseIdentifier : reuseIdentifier] ;
if (self){
//Adding Subviews
[self.contentView addSubView : self.myLabel1] ;
[self.contentView addSubView : self.myLabel2] ;
[self.contentView addSubView : self.myLabel3] ;
[self.contentView addSubView : self.myLabel4] ;
[self.contentView addSubView : self.myLabel5] ;
[self.contentView addSubView : self.myLabel6] ;
[self.contentView addSubView : self.myLabel7] ;
}
return self;
}
Когда я лениво экземпляр этикетки Я полагаю, начиная ориентация портрета и метки расположены на двух разных линий:
-(UILabel*) myLabel1
{
if (!_myLabel1){
_myLabel1 = [UILabel alloc] initWithFrame: CGRectMake(10,30,40,20);
_myLabel1.numberOfLines = 1;
_myLabel1.opaque = YES;
}
return _myLabel1;
}
-(UILabel*) myLabel2
{
if (!_myLabel2){
_myLabel2 = [UILabel alloc] initWithFrame: CGRectMake(50,30,40,20);
_myLabel2.numberOfLines = 1;
_myLabel2.opaque = YES;
}
return _myLabel2;
}
-(UILabel*) myLabel3
{
if (!_myLabel3){
_myLabel3 = [UILabel alloc] initWithFrame: CGRectMake(90,30,40,20);
_myLabel3.numberOfLines = 1;
_myLabel3.opaque = YES;
}
return _myLabel3;
}
-(UILabel*) myLabel4
{
if (!_myLabel4){
_myLabel4 = [UILabel alloc] initWithFrame: CGRectMake(10,60,40,20);
_myLabel4.numberOfLines = 1;
_myLabel4.opaque = YES;
}
return _myLabel4;
}
-(UILabel*) myLabel5
{
if (!_myLabel5){
_myLabel5 = [UILabel alloc] initWithFrame: CGRectMake(50,60,40,20);
_myLabel5.numberOfLines = 1;
_myLabel5.opaque = YES;
}
return _myLabel5;
}
-(UILabel*) myLabel6
{
if (!_myLabel6){
_myLabel6 = [UILabel alloc] initWithFrame: CGRectMake(90,60,40,20);
_myLabel6.numberOfLines = 1;
_myLabel6.opaque = YES;
}
return _myLabel6;
}
-(UILabel*) myLabel7
{
if (!_myLabel7){
_myLabel7 = [UILabel alloc] initWithFrame: CGRectMake(130,60,40,20);
_myLabel7.numberOfLines = 1;
_myLabel7.opaque = YES;
}
return _myLabel7;
}
Я хотел бы спросить, что является лучшим способом для достижения этой цели:
«Если ориентация портрет затем расположить этикетки на 2 г ifferent, как указано выше, если ориентация является ландшафтом, тогда упорядочьте все метки, которые будут отображаться на одной строке. Перестановка должна быть автоматической, если пользователь изменит ориентацию.
Перегруппировка в ландшафтном режиме должна иметь все метки, выровненные с значением y 30 (вместо 30 для первой строки и 60 для второй строки). Значение x меток 4, 5, 6, 7 также должно измениться, так как вместо того, чтобы помещаться под этикетками 1,2,3, они будут расположены справа от метки 3. «
Btw, I что когда-то запуск приложения в реальном iPhone содержал «портрет» на столе, ориентация ошибочно сообщается как «пейзаж» как с iOS 5.1, так и с iIOS 6.1. Я нашел это, потому что начал играть с layoutSubviews: «потому что я думал, что это лучшее место для перестановки представлений, создающих новый кадр для каждого из них в соответствии с ориентацией устройства. Это лучший случай для автоматического отключения? Представление будет и будет создано программно.
Благодаря
Nicola