дизайн подпредставления iPhone (UIView по сравнению с UIViewController)

Дублирование или отбрасывание пикселей не являются лучшим изменением размеров метода или изображения, поскольку результаты покажут растрирование и зубчатость. Для лучших результатов Вы должны передискретизировать изображение, которое даст получающемуся изображению намного более гладкий взгляд. Существует много методов для передискретизации, как билинейный, bicubic, lanczos и т.д.

Смотрят на функция BicubicResample от wxWidgets. Это работает, будет все виды изображений, не только шкала полутонов, но и необходимо быть в состоянии адаптировать его к потребностям. Тогда там также передискретизирует код от VirtualDub. Google Codesearch может показать более связанный код.

РЕДАКТИРОВАНИЕ: связи выглядят хорошо в предварительном просмотре, но разорваны, когда отправлено. Это странно. Перейдите к Google codesearch и запросу для "wxwidgets resamplebicubic", и "virtualdub передискретизируют" соответственно для получения тех же результатов.

7
задан Community 23 May 2017 в 12:01
поделиться

2 ответа

Вы на правильном пути. В вашем QuizController xib вы можете создавать отдельные представления, перетаскивая их в главное окно xib, а не в главное представление QuizController. Затем вы можете создать каждое необходимое представление в соответствии с типами ваших вопросов. Когда пользователь нажимает следующий или предыдущий, удалите предыдущее представление и загрузите необходимое представление на основе вашего типа вопроса, используя -addSubview в главном представлении контроллера представления, и отслеживайте, какое из вложенных представлений отображается в данный момент. Попробуйте что-то вроде этого:

[currentView removeFromSuperView];

switch(questionType)
{
    case kMultipleChoice:
        [[self view] addSubview:multipleChoiceView];
        currentView = multipleChoiceView;
        break;
    case kOpenEnded:
        [[self view] addSubview:openEndedView];
        currentView = openEndedView;
        break;
// etc.
}

Где представление multipleChoice и openEndedView - это выходы UIView в вашем QuizController, подключенные к представлениям, которые вы создали в IB. Возможно, вам придется изменить положение вашего представления в родительском представлении, прежде чем добавлять его, чтобы он отображался в нужном месте,

5
ответ дан 7 December 2019 в 12:23
поделиться

Да, IB на iPhone действительно хочет, чтобы владелец файла был подклассом UIViewController, что делает то, что вы хотите, немного сложным. Что вы можете сделать, так это загрузить перо в существующий UIViewController вместо того, чтобы создавать его с помощью пера:

@implementation QuizController

- (void) loadCustomViewFromNib:(NSString *)viewNibName {
  (void)[[NSBundle mainBundle] loadNibNamed:viewNibName owner:self options:nil];
}

@end

Это заставит среду выполнения загружать перо, но вместо того, чтобы создавать новый контроллер представления для подключения действий и выходов, которые он будет использовать что вы передаете как владелец. Поскольку мы передаем self в представлении, определенном в этом пере, он будет прикреплен к любому IBOutlet, которому он назначен после вызова.

0
ответ дан 7 December 2019 в 12:23
поделиться