วิธีการตั้งชื่อของ UIButton เป็นการจัดตำแหน่งด้านซ้าย


472

ฉันต้องการแสดงที่อยู่อีเมลจากด้านซ้ายของ a UIButtonแต่อยู่ในตำแหน่งกึ่งกลาง

มีวิธีใดในการตั้งค่าการจัดตำแหน่งทางด้านซ้ายของ a UIButton?

นี่คือรหัสปัจจุบันของฉัน:

UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];

คำตอบ:


1567

ตั้งเนื้อหาแนวนอนAlignment:

emailBtn.contentHorizontalAlignment = .left;

คุณอาจต้องการปรับเนื้อหาที่ใส่เข้าไปมิฉะนั้นข้อความจะแตะที่เส้นขอบด้านซ้าย:

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

// Swift 3 and up:
emailBtn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0);

44
โปรดทราบว่าคุณสามารถตั้งค่าคุณสมบัติเหล่านี้ทั้งสองได้จากตัวสร้างส่วนต่อประสาน
หมดเวลา Damian

1
ดังนั้นมันจึงเป็นเบอร์ 9000 จากฉัน, thanx, คำตอบที่มีประโยชน์
ลอจิก

6
เราขี้เกียจเกินไปที่จะค้นหาเอกสาร เราจะทำอย่างไรถ้าไม่มีเช่นนั้น!
Kedar Paranjape

3
ไปเพื่อแสดงว่าเอกสารนั้นดีกว่าเอกสารของ Apple
GeneCode

1
UIControlContentHorizontalAlignmentLeadingและUIControlContentHorizontalAlignmentTrailingถูกเพิ่มใน iOS 11
Cal Stephens

118

คุณยังสามารถใช้ตัวสร้างส่วนต่อประสานได้หากคุณไม่ต้องการทำการปรับเปลี่ยนในโค้ด ที่นี่ฉันได้จัดแนวข้อความและเยื้อง:

UIButton ใน IB

อย่าลืมว่าคุณสามารถจัดแนวภาพในปุ่มได้ด้วย:

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งนี้ช่วยฉันออกมาเป็นตันไม่อยากเชื่อเลยว่าไม่ได้ตระหนักว่านั่นคือสิ่งที่ควบคุมได้
อีธานปาร์คเกอร์

ขอบคุณมันช่วยฉันได้ ฉันไม่สามารถค้นหาตำแหน่งขอบของปุ่มได้โดยไม่ต้องใช้ตัวบ่งชี้ลูกศรในรูปภาพตัวอย่างของคุณ
Ashok

ใน Xcode 8.2.1 มันเคลื่อนไปยังสถานที่อื่น ๆ ดูคำตอบของฉันด้านล่าง
แดง

วิธีการทำโปรแกรมโดยเร็ว ฉันต้องการจัดแนวภาพทางด้านขวาและตั้งชื่อทางด้านซ้าย ???
Visal Sambo


13
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

13

Swift 4+

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

9

การใช้emailBtn.titleEdgeInsetsดีกว่าcontentEdgeInsetsในกรณีที่คุณไม่ต้องการเปลี่ยนตำแหน่งเนื้อหาทั้งหมดภายในปุ่ม




5

มีข้อผิดพลาดเล็กน้อยในรหัสของ @DyingCactus นี่คือทางออกที่ถูกต้องในการเพิ่ม UILabel ให้กับ UIButton เพื่อจัดแนวข้อความปุ่มเพื่อควบคุมปุ่ม 'title' ได้ดีขึ้น:

NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight); 

CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];   
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor]; 
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];   
myLabel.textAlignment = UITextAlignmentLeft;

[myButton addSubview:myLabel];
[myLabel release];

หวังว่านี่จะช่วย ....

อัล



2

ในSwift 5.0และXcode 10.2

คุณมีสองวิธีในการเข้าใกล้

1) แนวทางโดยตรง

btn.contentHorizontalAlignment = .left

2) ตัวอย่างSharedClass (เขียนครั้งเดียวและใช้ทุกเครื่อง)

นี่คือคลาสที่แชร์ของคุณ (เช่นนี้คุณเข้าถึงคุณสมบัติของส่วนประกอบทั้งหมด)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

//UIButton extension
extension UIButton {
    func btnProperties() {
        contentHorizontalAlignment = .left
    }
}

ในการเรียกใช้ViewControllerของคุณเช่นนี้

button.btnProperties()//This is your button

1

ลอง

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
สิ่งนี้ใช้งานได้สำหรับฉันเนื้อหาแนวนอนการจัดตำแหน่งไม่ได้ขอบคุณ
danfordham
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.