WoW:API Region SetPoint: Difference between revisions
(→Details: details on edges) |
(→Points) |
||
Line 14: | Line 14: | ||
=== Points === | === Points === | ||
There are | There are nine valid point values: | ||
* "TOP", "RIGHT" "BOTTOM" "LEFT": the center-points of the respective sides. | * "TOP", "RIGHT" "BOTTOM" "LEFT": the center-points of the respective sides. | ||
* "TOPRIGHT", "TOPLEFT", "BOTTOMLEFT", "BOTTOMRIGHT": corners of the frame rectangle. | * "TOPRIGHT", "TOPLEFT", "BOTTOMLEFT", "BOTTOMRIGHT": corners of the frame rectangle. | ||
* "CENTER": the center point of the frame rectangle. | |||
== Examples == | == Examples == |
Revision as of 18:00, 23 July 2009
← Widget API ← Region < SetPoint
Sets an attachment point of an UI component.
obj:SetPoint(point, relativeFrame, relativePoint, ofsx, ofsy); obj:SetPoint(point, relativeFrame, relativePoint); obj:SetPoint(point, ofsx, ofsy); obj:SetPoint(point);
Arguments
- point
- String - Point of the object to adjust based on the anchor.
- relativeFrame
- String/Widget - Name of, or reference to, a frame to attach obj to; defaults to the object's parent (or the screen, if object has no parent) if nil or omitted.
- relativePoint
- String - point of the relativeFrame to attach point of obj to. If not specified, defaults to the value of point.
- ofsx
- Number - x-offset (negative values will move obj left, positive values will move obj right), defaults to 0 if not specified.
- ofsy
- Number - y-offset (negative values will move obj down, positive values will move obj up), defaults to 0 if not specified.
Points
There are nine valid point values:
- "TOP", "RIGHT" "BOTTOM" "LEFT": the center-points of the respective sides.
- "TOPRIGHT", "TOPLEFT", "BOTTOMLEFT", "BOTTOMRIGHT": corners of the frame rectangle.
- "CENTER": the center point of the frame rectangle.
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
- Behavior of this function with multiple anchors is complex. Generally, you can override points by setting them again (so repeated assignment to the "TOPLEFT" point of a frame would move the frame, unless other anchor points interfere). If you're repositioning a frame, call
obj:ClearAllPoints()
to eliminate unwanted interactions. - Offset units are relative to the screen's effective scale. WoW's screen always has a height of 768 units, while screen width varies with aspect ratio.
Edge definitions
The edge "points" (TOP, RIGHT, BOTTOM, LEFT) are not actual points, but... edges. To fully define a region position using edges alone, you will need to define all four (as opposed to using corners, where you only need two) edges.
Therefore, defining an edge does not necessarily place a region relative to the center of that edge (For example, if you define TOP and RIGHT, the region will be placed at the TOPRIGHT corner). However, by default a region is "pulled" to the center if the number of points defined is insufficient.
Example:
Region:ClearAllPoints(); Region:SetPoint("TOP", relativeframe); Region:SetWidth(100); Region:SetHeight(100);
will place Region to the top center of the relativeframe while adding a
Region:SetPoint("RIGHT", relativeframe);
will place Region in the top right corner and now Region is fully defined.