Widget API: Region:SetPoint
Jump to navigation
Jump to search
← Widget API ← Region < SetPoint
Sets the current attachment point of an UI component.
obj:SetPoint(point [, frame] [, relativePoint] [, x [, y]]);
Parameters
Arguments
- point
- The point on your object to use for attaching the obj (see API Positions) (i.e. bind the left side of your frame)
- frame
- Name of, or reference to, a frame to attach obj to; or nil to anchor relative to obj's parent (if no parent exists, anchor reative to the whole screen).
- relativePoint
- The relative point of frame to attach obj to (see API Positions); if not specified, defaults to the value of point when not specified.
- x
- x-offset (negative values will move obj left, positive values will move obj right), defaults to 0 if not specified.
- y
- y-offset (negative values will move obj down, positive values will move obj up), defaults to 0 if not specified.
Examples
The following are all equivalent.
MainMenuBar:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 0, 0); MainMenuBar:SetPoint("BOTTOMLEFT", UIParent, "BOTTOMLEFT", 0, 0); MainMenuBar:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT"); MainMenuBar:SetPoint("BOTTOMLEFT", "UIParent");
The following is equivalent to the above, given that the parent frame of MainMenuBar is UIParent.
MainMenuBar:SetPoint("BOTTOMLEFT"); MainMenuBar:SetPoint("BOTTOMLEFT", 0, 0);
Details
- You will have to do a
obj:ClearAllPoints()
before using obj:SetPoint(...), if you expect the frame to actually move. -- Maisha
- x and y units are relative to the screen's effective scale. WoW's screen always has a height of 768 units, width varies with aspect ratio.
- As of 1.11 or so, there seems to be an exponential-time increase if you anchor chains of objects with more than one point.
- As of 2.2 the screen coordinates are no longer relative to the TOPLEFT instead they are relative to closest screen position which can be TOPLEFT, TOP, TOPRIGHT, LEFT, CENTER, RIGHT, BOTTOMLEFT, BOTTOM and BOTTOMRIGHT be sure to specify the relativePoint argument, wich you can get via GetPoint(), or your frames will appear at the wrong place and even off the screen.