Как добиться горизонтального масштабирования в iOS?

Я использовал библиотеку TSRDialScrollView, чтобы выполнить требования дизайна в моем коде.

Но не смог решить несколько вопросов.

По ссылке ниже:

https://www.cocoacontrols.com/controls/trsdialsscrollview

Я сделал несколько изменений в своем коде

-> Чтобы очистить цвет фона

CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(context, rect);

Но он отображает черный цвет.

-> Установка метки после инвертирования вида

- (void)drawLabelWithContext:(CGContextRef)context
                     atPoint:(CGPoint)point
                        text:(NSString *)text
                   fillColor:(UIColor *)fillColor
                 strokeColor:(UIColor *)strokeColor {


    // We want the label to be centered on the specified x value
    NSInteger label_y = ((point.y-100) - (boundingBox.width / 2));
}

-> Инвертировал весь вид, изменив длину младшего и основного тика на отрицательную в коде.

- (void)drawTicksWithContext:(CGContextRef)context atX:(long)x
{
    CGPoint point = CGPointMake(x, self.frame.size.height);
    CGContextSetShadowWithColor(
                                context,
                                self.shadowOffset,
                                self.shadowBlur,
                                self.shadowColor.CGColor);

    if ([self isMajorTick:x]) {
        [self drawMajorTickWithContext:context
                               atPoint:point
                             withColor:self.majorTickColor
                                 width:self.majorTickWidth
                                length:-self.majorTickLength];
        // Draw the text
        //
        // 1) Take the existing position and subtract off the lead spacing
        // 2) Divide by the minor ticks to get the major number
        // 3) Add the minimum to get the current value
        //
        int value = (point.x - self.leading) / self.minorTickDistance + _minimum;

        NSString *text = [NSString stringWithFormat:@"%i", value];
        [self drawLabelWithContext:context
                           atPoint:point
                              text:text
                         fillColor:self.labelFillColor
                       strokeColor:self.labelStrokeColor];

    } else {

        CGContextSaveGState(context);
        [self drawMinorTickWithContext:context
                               atPoint:point
                             withColor:self.minorTickColor
                                 width:self.minorTickWidth
                                length:-self.minorTickLength];
        // Restore the context
        CGContextRestoreGState(context);
    }
} 

Я хочу, чтобы масштабирование было выполнено, как показано ниже.

Масштабирование изображения

1) Путем регулировки смещения представление прокрутки должно быть посередине (т.е. когда оно прокручивается до минимального значения, позиция 0 не находится в середине представления).

2) Я хочу, чтобы цвет фона был четким.

3) В соответствии с дизайном, как установить красный цвет на среднюю линию, которая должна быть закреплена?

4) Как отобразить светло-серый цвет посередине, как показано на рисунке?

Я ценю вашу помощь и, пожалуйста, предложите, как этого добиться, действительно мне нужно выполнить эту задачу, она очень нужна.

Заранее спасибо.


person Lion    schedule 17.03.2016    source источник


Ответы (1)


TRSDialView.m

файл :-

В - (instancetype)initWithFrame:(CGRect)frame добавить self.opaque = NO;

Внутри метода - (void)drawRect:(CGRect)rect добавьте следующий код ниже CGContextRef context = UIGraphicsGetCurrentContext(); кода строки

    // Fill the background
    CGContextSetFillColorWithColor(context, self.backgroundColor.CGColor);

   // CGContextFillRect(context, rect);
    CGContextClearRect(context, rect);

Приведенный выше код очистит цвет фона.

Чтобы настроить offset, добавьте width constraint к TRSDialView в Storyboard

Красная линия и серый вид могут быть добавлены как subview в storyboard

person Lion    schedule 21.03.2016