site_archiver@lists.apple.com Delivered-To: cocoa-dev@lists.apple.com Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qt.io; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dm+qgUSuRWqwbtVZEGl5gfJuD3nEdrF2kprIlSQMI9w=; b=obRQkxA0Xnfxye7/KnBKaHCWM43WkcN2z9tnqzlOHgy0DUWsGCfZVpd583lZUyeEXWA4C18JOvbL6X4Awc71pi2qBvAmmPTBF6U/e/t6x3p2ujAMZFaoRQZDi3B/HyNaSeV1zxKz6GO5/VMhZgPSRhztqYcOaNqWsexRMCqCRZk= Thread-index: AQHY7qvuFUinzL5tKk6W6e+RZ/kcGQ== Thread-topic: NSAlert accessory view fill horizontal space, respecting margins Hi all, I’m trying to get the accessory view of an NSAlert to layout similarity to the the text fields of the messageText and informativeText. That is: * Fill the the available horizontal space of the alert, respecting margins * Including accounting for the different margins of the normal and wide appearance * Overflow any content of the accessory view by increasing its height * Never contributing to increasing the width of the alert itself But attempts at doing this with auto layout constraints have failed me, as merely setting translatesAutoresizingMaskIntoConstraints = NO for my view to set up constraints seems to break the margins that NSAlert applies to the accessory view, and I don’t know how to restore them. Looking at the disassembly of NSAlert (_buildLayoutConstraintsForWideAppearance e.g.) it seems to use constraint based layout, with the accessory view is wrapped inside another view (accessoryContainer), but if I print out the constraints of the views in play all I see are instances of NSAutoresizingMaskLayoutConstraint. And inspecting the views in the hierarchy, they all respond YES to translatesAutoresizingMaskIntoConstraints. Perhaps this is a red herring, but shouldn’t I be seeing non-autoresizing constants here? How would one expand the accessory view to fill its superview (accessoryContainer), in a way that keeps the accessoryContainer’s position and margins in both normal and wide apperance? Here’s a reproducer of some of the things I’m seeing: #import <Cocoa/Cocoa.h> int main() { bool triggerWideApperance = true; NSString *loremIpsum = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; loremIpsum = [@"" stringByPaddingToLength:(triggerWideApperance ? 5 : 1) * loremIpsum.length withString:loremIpsum startingAtIndex:0]; NSAlert *alert = [NSAlert new]; alert.messageText = loremIpsum; alert.informativeText = loremIpsum; // Attempt 1: Disables the wide alert apperance, making the alert super wide alert.accessoryView = [NSTextField wrappingLabelWithString:loremIpsum]; // Attempt 2: Retains the wide alert apperance, but loses the left margin of the accessory view, alert.accessoryView = [NSStackView stackViewWithViews:@[ [NSTextField wrappingLabelWithString:loremIpsum] ]]; [alert layout]; [alert runModal]; } Thanks for any tips or insights on this! Cheers, Tor Arne _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/site_archiver%40lists.appl... This email sent to site_archiver@lists.apple.com