Какао NSView, изменяющий автокалибровку свойств

const orgInput = document.getElementById('organisation'),
a = document.getElementById('a');

function setA(){
  a.innerText = orgInput.value;
  a.href = orgInput.value;
}
<input type="text" id="organisation">
<input type="button" onclick="setA()" value="create"/>
<a id="a"></a>

21
задан Spooky 19 June 2015 в 21:42
поделиться

3 ответа

См. Метод setAutoresizingMask: NSView и связанные с ним маски изменения размера .

19
ответ дан 29 November 2019 в 06:38
поделиться

Каждое представление имеет маску флагов, управляемую установкой свойства autoresizingMask с ИЛИ поведения, которое вы хотите от масок изменения размера . Кроме того, супервизор должен быть настроен для изменения размера его подпредставлений .

Наконец, в дополнение к основным параметрам изменения размера, определяемым маской, вы можете полностью управлять компоновкой подвидов, реализовав - resizeSubviewsWithOldSize:

8
ответ дан 29 November 2019 в 06:38
поделиться

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

// MyNSViewCategory.h:
@interface NSView (myCustomMethods)

- (void)fixLeftEdge:(BOOL)fixed;
- (void)fixRightEdge:(BOOL)fixed;
- (void)fixTopEdge:(BOOL)fixed;
- (void)fixBottomEdge:(BOOL)fixed;
- (void)fixWidth:(BOOL)fixed;
- (void)fixHeight:(BOOL)fixed;

@end


// MyNSViewCategory.m:
@implementation NSView (myCustomMethods)

- (void)setAutoresizingBit:(unsigned int)bitMask toValue:(BOOL)set
{
    if (set)
    { [self setAutoresizingMask:([self autoresizingMask] | bitMask)]; }
    else
    { [self setAutoresizingMask:([self autoresizingMask] & ~bitMask)]; }
}

- (void)fixLeftEdge:(BOOL)fixed
{ [self setAutoresizingBit:NSViewMinXMargin toValue:!fixed]; }

- (void)fixRightEdge:(BOOL)fixed
{ [self setAutoresizingBit:NSViewMaxXMargin toValue:!fixed]; }

- (void)fixTopEdge:(BOOL)fixed
{ [self setAutoresizingBit:NSViewMinYMargin toValue:!fixed]; }

- (void)fixBottomEdge:(BOOL)fixed
{ [self setAutoresizingBit:NSViewMaxYMargin toValue:!fixed]; }

- (void)fixWidth:(BOOL)fixed
{ [self setAutoresizingBit:NSViewWidthSizable toValue:!fixed]; }

- (void)fixHeight:(BOOL)fixed
{ [self setAutoresizingBit:NSViewHeightSizable toValue:!fixed]; }

@end

Которые затем могут использоваться как следует:

[someView fixLeftEdge:YES];
[someView fixTopEdge:YES];
[someView fixWidth:NO];
30
ответ дан 29 November 2019 в 06:38
поделиться