- PVSM.RU - https://www.pvsm.ru -
Этот пост — крик гнева в сторону Apple, и все же во мне осталась надежда. Я являюсь iOS-разработчиком уже 4 года, и то, что поначалу казалось сиюминутным несовершенством, несущественными деталями, с годами превращается в китайскую пытку водой, а ведь мы с вами пользуемся IB каждый день, ну или хотя бы раз в неделю.

Возможно, Apple и не заслуживает такой критики — правда, все остальное, ну или почти все остальное, у них на высоте. Исключая iTunes и Apple developer portal (который за последние годы, все же, стал значительно лучше) технологии позволяют сосредоточиться на том, что ты делаешь, а не на том, как это будет смотреться в IE.
Сначала я не использовал IB вовсе, уж таким кривым и убогим он мне казался после других визуальных редакторов. Даже Macromedia Dreamviewer MX, имхо, имел больше шансов называться WYSIWYG-редакторов для UI. Но прошло несколько лет, и появилась замечательная штука — Autolayout — которую катастрофически неудобно имплементить в коде. Мало счастья в таком коде:
UIImageView *iv = [[UIImageView alloc] initWithImage:image];
UIView *renderView = [[UIView alloc] initWithFrame:iv.bounds];
NSInteger completedDistance = renderView.bounds.size.width * percentsCompleted;
UIView *progressView = [[UIView alloc] initWithFrame:CGRectMake(completedDistance, 0, renderView.bounds.size.width, renderView.bounds.size.height)];
progressView.backgroundColor = RGB_UICOLOR(255, 255, 255, 0.8);
renderView.clipsToBounds = YES;
[renderView addSubview:iv];
[renderView addSubview:progressView];
но код вида
NSMutableArray *constraints = [@[] mutableCopy];
[constraints addObject:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.parentView
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.parentView
attribute:NSLayoutAttributeHeight
multiplier:1
constant:0]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.parentView
attribute:NSLayoutAttributeTop
multiplier:1
constant:0]];
[constraints addObject:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.parentView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0]];
[self.parentView addConstraints:constraints];
ввергает душу девелопера в уныние и депрессию. В IB настройка авторазметки (autolayout) по началу тоже на сахар, но с ходом времени приноравливаешься, начинаешь заставлять себя не замечать жутких косяков, терпеть маленькие недостатки пока… у тебя не случается истерика и количество откровенных ляпов, неисправленных годами, не переваливает за все разумные пределы. А ведь альтернативы нет, формат недокументарованный, сторонних инструментов не будет! Вот мой укороченный черненький списочек:
Мало всего этого, нам недавно добавили новой боли в заднице:
К чести Apple можно сказать, что констрэйнты перестали съезжать от каждого чиха на мышку, а ведь это доводило меня до нервного срыва 4 раза в xCode 4, а напарник друга коллеги даже скончался от сердечного приступа.
Те, кто недавно открыл для себя iOS, хором поют «допилят!», свято веруя в икону яблока и Стива Джобса. На что я возражаю: «Не допилят!», у них всегда найдется десяток дел поважнее. Действительно важных, красивых дел, но Apple — мы имеем с IB дело каждый день, пожалей нас, простых смертных девелоперов!
На прощание хочу предложить интересный опрос:
Автор: iago
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/44466
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/195390/
Нажмите здесь для печати.