UIButton dengan peningkatan tinggi jika lebar tidak cukup?

Saya memerlukan tombol untuk mengatur melalui autolayout yang tingginya akan bertambah jika ruang horizontal tidak cukup yaitu. setelah rotasi. Saya memiliki batasan awal dan akhir pada tampilan induk, dan dalam mode potret terdapat kekurangan ruang, jadi saya berpikir untuk tidak mengurangi ukuran font, tetapi menambah tinggi dan mengatur Word Wrap untuk Line Break. Saya sedang bereksperimen size classes, tetapi entah bagaimana selalu wCompact hAny digunakan, karena saya menguji di iPhone. Jadi mengatur ketinggian tombol yang berbeda untuk kelas ukuran yang berbeda tidak berpengaruh.

Adakah yang tahu cara mengatur tinggi tombol tergantung pada lebar tombol yang tersedia dan konten melalui batasan tata letak otomatis?

Pada tombol iPhone di bawah memerlukan dua baris, bukan 30px, tetapi appr. 60 piksel.

masukkan deskripsi gambar di sini


person János    schedule 16.09.2014    source sumber
comment
@janos- berapa lebar maksimal tombol...?   -  person Vivek Sehrawat    schedule 16.09.2014
comment
tidak ada lebar maksimal, itu tergantung pada aplikasi perangkat mana yang berjalan   -  person János    schedule 16.09.2014
comment
@janos- Anda harus memutuskan berapa lebar maksimal tombol.   -  person Vivek Sehrawat    schedule 16.09.2014
comment
Saya tidak akan melakukannya secara terprogram dengan metode sizeWithAttributes   -  person János    schedule 16.09.2014


Jawaban (3)


Mengapa Anda menggunakan tombol? Ini bukan gunanya tombol. Jika Anda memiliki jumlah teks sebanyak itu untuk ditampilkan, gunakan UILabel atau UITextView. Anda kemudian dapat menambahkan pengenal isyarat ke dalamnya untuk menangkap ketukan.

person Fogmeister    schedule 16.09.2014

Anda dapat menggunakan UILabel dan dapat menggunakan UITapGestureRecognizer di atasnya. dan atur jumlah baris=0 dalam file nib dan lakukan satu tindakan gerakan ketuk. ini akan berfungsi seperti tombol dengan hampir tanpa kode seperti yang Anda inginkan

person Vivek Sehrawat    schedule 16.09.2014

Karena saya curiga hal itu tidak mungkin dilakukan dengan Interface Builder, saya membuatnya dengan membuat subkelas UIButton:

class DynamicHeightButton: UIButton {

    override func layoutSubviews() {
        super.layoutSubviews()

        let size = (self.titleForState(UIControlState.Normal)! as NSString).boundingRectWithSize(CGSizeMake(self.bounds.size.width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(17)], context: nil)
        self.bounds.size.height = size.height + 8
    }
}
person János    schedule 16.09.2014