Làm cách nào để đặt tiêu đề của UIButton là căn lề trái?


472

Tôi cần hiển thị địa chỉ email từ bên trái của a UIButton, nhưng nó đang được định vị ở trung tâm.

Có cách nào để đặt căn lề sang bên trái của a UIButtonkhông?

Đây là mã hiện tại của tôi:

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];

Câu trả lời:


1567

Đặt nội dungHTHERAlocate:

emailBtn.contentHorizontalAlignment = .left;

Bạn cũng có thể muốn điều chỉnh nội dung bên trái được chèn nếu không văn bản sẽ chạm vào viền trái:

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

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

44
Hãy nhớ rằng bạn cũng có thể đặt cả hai thuộc tính này từ Trình tạo giao diện.
Mihai Damian

1
Vì vậy, đó là số 9000 từ tôi, thanx, câu trả lời hữu ích
Logic

6
Chúng tôi quá lười để tìm kiếm tài liệu. Chúng ta sẽ làm gì nếu không có SO!
Kedar Paranjape

3
Đi để hiển thị SO là tài liệu tốt hơn tài liệu của Apple.
GeneCode

1
UIControlContentHorizontalAlignmentLeadingUIControlContentHorizontalAlignmentTrailingđã được thêm vào iOS 11
Cal Stephens

118

Bạn cũng có thể sử dụng trình tạo giao diện nếu bạn không muốn thực hiện các điều chỉnh trong mã. Ở đây tôi để lại căn chỉnh văn bản và cũng thụt lề một số:

UIButton trong IB

Đừng quên bạn cũng có thể căn chỉnh một hình ảnh trong nút.

nhập mô tả hình ảnh ở đây


Điều này giúp tôi rất nhiều, không thể tin rằng tôi đã không nhận ra đó là những điều khiển đó để làm gì.
Ethan Parker

Cảm ơn, nó đã giúp tôi. Tôi không thể tìm ra các cạnh trong cho tiêu đề nút mà không có sự trợ giúp của chỉ dẫn mũi tên trong ảnh mẫu của bạn.
Ashok

trong xcode 8.2.1, nó chuyển đến nơi khác, xem câu trả lời của tôi bên dưới
dang

Làm thế nào để làm điều đó lập trình trong swift? Tôi muốn căn chỉnh hình ảnh bên phải, và tiêu đề ở bên trái ???
Visal Sambo

36

Trong Swift 3+:

button.contentHorizontalAlignment = .left

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

Sử dụng emailBtn.titleEdgeInsetssẽ tốt hơn contentEdgeInsets, trong trường hợp bạn không muốn thay đổi toàn bộ vị trí nội dung bên trong nút.



7

trong xcode 8.2.1 trong trình xây dựng giao diện, nó chuyển sang:nhập mô tả hình ảnh ở đây


5

Có một lỗi nhỏ trong mã của @DyingCactus. Đây là giải pháp chính xác để thêm UILabel vào UIButton để căn chỉnh văn bản nút để kiểm soát tốt hơn nút '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];

Hi vọng điêu nay co ich....

Al


2

Đối với Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Điều này có thể giúp đỡ nếu có ai cần.


2

Trong Swift 5.0Xcode 10.2

Bạn có hai cách để tiếp cận

1) Tiếp cận trực tiếp

btn.contentHorizontalAlignment = .left

2) Ví dụ SharedClass (viết một lần và sử dụng mọi kho)

Đây là lớp chia sẻ của bạn (như thế này bạn truy cập tất cả các thuộc tính thành phần)

import UIKit

class SharedClass: NSObject {

    static let sharedInstance = SharedClass()

    private override init() {

    }
}

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

Trong cuộc gọi ViewContoder của bạn như thế này

button.btnProperties()//This is your button

1

Thử

button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;

1
Điều này làm việc cho tôi, contentHTHERAlocate không, cảm ơn.
danfordham
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.